With this circuit you can control two unipolair stepper motors in full step mode via the RS232 serial port of your PC. A terminal program such as Hyperterminal can be used to control the stepper motors. The stepper motors can be driven one at a time.

 Features:

  • Drives two unipolair stepper motors in full step mode
  • Accepts commands via the serial port of your PC.
  • Can be used with any OS that has a standard terminal program such as Hyperterminal.
  • Drives stepper motors up to 24V, 500mA.
  • Power supply ......................12-24 VDC

Hardware

A MAX232 IC is used to convert the signals from the serial port of the PC to the TTL level of the AVR µ-controller. A AT2313 µ-controller is used to take the signals from the serial port and to translate the signals to drive the coils of the stepper motor.
The signals from the µ-controller are amplified by the ULN2803A which is an Darlington Array that can drive loads up to 500mA. It's input is TTL level and the output is up to 30VDC. The stepper motor is driven in full step mode, for every step two windings are energised. The motor can be rotated left and right by sending commands to the board with the terminal program. A maximum of 32000 step can be made with each command.
StepCoil1ACoil1BCoil2ACoil2B
1ononoffoff
2offononoff
3offoffonon
4onoffoffon


Schematic and PCB Layout




Software

The software code is build with the AVR BASCOM compiler
To run the stepper motor you need a terminal program such as Hyperterminal. To synchronize the terminal program with the stepper board you need to make the next settings in the terminal program:
COM1 - 9600 baud - data bits 8 - 1 stop bit - No parity bit - No handshake.
The COM port can be set to the COM port that you use on your PC.
There are 4 commands that you can send to the stepper controller:
m0rx and m0lx and m1lx and m1rx.
The x in the command is a number from 0 to 32000. If you send the command m0l2000 the motor 0 turns clock wise 2000 steps and if you send m0r2000 the motor 0 turns counter clock wise 2000 steps.
After power up the board, a message is shown in your terminal program. You can then give the commands to control the stepper motors. See the example below.

Pathfinder Robot Full Arduino project

ABOUT THIS PROJECT

“Some people worry that artificial intelligence will make us feel inferior, but then, anybody in his right mind should have an inferiority complex every time he looks at a flower.” - Alan Kay

Synopsis

One of the substantial central issues in designing mobile robots is obstacle avoidance. This paper represents the design of an Obstacle Avoiding Robot that can detect obstacles in its path and maneuver around them by making intelligent decisions. It is an Arduino Microcontroller and Adafruit Motor Shield based robotic vehicle which employs an ultrasonic sensor for air medium. For providing the necessary autonomous functions, software application known as Arduino Software was used . The integration of an ultrasonic distance sensor mounted on a servo motor provided a much wider accuracy for this robot to detect the surrounding obstacles. This robot gained more precision by the implementation of a buzzer and a diffused light through which it can indicate obstacle detection mode as well as the speed of the robot in different situations. As a fully autonomous robot, it has the ability to traverse in unfamiliar environments without making any collision. And this developed method can be used for further improvements to increase the adaptability of obstacle detection in diverse situations.





COMPONENTS AND SUPPLIES

A000066 iso both
Arduino UNO & Genuino UNO
One of the primary components.
×1
51gzz5eu9pl. sx425
Ultrasonic Sensor - HC-SR04 (Generic)
One of the primary components.
×1
Adafruit industries ada258 image 75px
Li-Ion Battery 1000mAh
One of the primary components.
×2
09264 1
RGB Diffused Common Cathode
One of the primary components.
×1
Adafruit industries ada1536 image
Buzzer
One of the necessary supplies.
×1
08377 02 l
Resistor 330 ohm
One of the necessary supplies.
×3
Adafruit industries ada62 image 75px
USB-A to B Cable
One of the necessary supplies.
×1
11026 02
Jumper wires (generic)
One of the necessary supplies.
×20






NECESSARY TOOLS AND MACHINES


Zvpgre11knthhycoezxn
Arduino Materia 101
One of the primary machines.








A4kb1xynkid5ebvjyil7
Digilent Screwdriver






Interpretation

The included libraries added in block code are as follows,
AFMotor.h
Servo.h
The defined connections assigned in inline code are as follows,
define BuzzPIN A0
define TrigPIN A1
define EchoPIN A2
define LEDBPIN A3
define LEDGPIN A4
define LEDRPIN A5
define DCMROFF 25
The expected algorithms rendered in robotic architecture are as follows,
  • Capacity to detect obstacles in its path based on predetermined threshold distance.
  • Search for new course to a relatively open direction by making intelligent decision.
  • Indicate the speed and obstacle detecting mode by RGB Diffused LED and buzzer.
An autonomous robot is one that has some kind of built in Artificial Intelligence functions. This paper provided the necessary details to design a mobile robot that avoids obstacles, navigates on its own and indicates motion by turning on a particular color of a diffused light. The robot is built on Arduino platform with the help of its software to integrate proper assembly codes for which it achieved the required intelligence. Thus the developed robot is fully autonomous and capable to carry out its operation without any human interaction. After transferring the code, this robot has the ability to move avoiding all obstacles in an unknown environment with considerable accuracy.

Proteus Professional 8.0 full 


Proteus Professional 8.0 full | 320 MB




Proteus combines ease of use with powerful features to help you design, test and layout professional PCBs like never before. With nearly 800 microcontroller variants ready for simulation straight from the schematic, one of the most intuitive professional PCB layout packages on the market and a world class shape based autorouter included as standard, Proteus Design Suite 8 delivers the complete software package for today and tomorrow's engineers.


PCB Layout
Proteus PCB design seamlessly combines Schematic Capture and PCB layout to provide a powerful, integrated and easy to use suite of tools for professional PCB Design.

Visual Designer
Visual Designer for Arduino combines world class Proteus VSM simulation with a new flowchart engine to provide a truly integrated and intuitive development environment.

VSM Simulation
The Proteus Design Suite is wholly unique in offering the ability to co-simulate both high and low-level micro-controller code in the context of a mixed-mode SPICE circuit simulation.

What's New in Proteus :
- This Version is a significant release in our PCB development schedule with three main areas of focus.
- First, we have introduced comprehensive support for automatic length matching on the PCB. Having configured tolerances and the serpentine shape the user can simply select the relevant tracks and then the invoke the match command from the context menu.
- We've also introduced a more formal layer stackup wizard where the build up of the physical PCB can be specified and then passed to the fab house. This allows the user to specifically define the drill passes (drill ranges) used in the board which for multi-layer boards in particular then allows us to provide intelligent via options during track placement.

Finally, we've re-written the design explorer module to enable :
- System wide support for Assembly Variants, allowing the user to create a product variant and specify the 'fitted' or 'not fitted' state of individual parts in that variant.
- More powerful search and filtering on the schematic, together with property replacement. This makes it fast and simple for example to change the package on all 10nF capacitors in the design.
- Progress on the 'push-and-shove manual routing' feature remains on target for beta testing at the end of the year.
- Meanwhile, on the Proteus VSM side, we are pleased to announce the completion of the popular STM32 ARM Cortex-M3 family, along with several new variants in the PIC microcontroller families and several new embedded peripheral models.
- Finally, we have added support for popular Arduino robot turtle simulation to the Visual Designer module.

Operating System:
Windows� 10, Windows� 8 / 8.1, Windows� 7

Pressure Pad Interfacing with Arduino

COMPONENTS AND SUPPLIES:

  1. ARDUINO UNO&GENUINO UNO
  1. SEN-09376 Pressure Pad
  1.  LED

ABOUT THIS PROJECT


Pressure pads are designed to detect when pressure is applied to an area, and they come in a variety of quality and accuracy. The simplest pressure pads are often the equivalent of big switches. Inside a pressure pad are two layers of foil separated by a layer of foam with holes in it. When the foam is squashed, the metal contacts touch through the foam and complete the circuit.
This tutorial serves as a quick primer on rressure pads and demonstrates how to hook them up and use them with Arduino.
SCHEMATICS
CIRCUIT DIAGRAM:

CODE :

WinRelais: Logiciel de saisie de schéma électrotechnique
Schémas de types unifilaires, multifilaires, architecturaux et développés, pour le bâtiment et l'industrie.
Schémas pneumatiques et hydrauliques possibles. Editeur de symbole inclu.

Arduino Home Automation Using RF

Home automation is one of in demand concepts in today’s world. Hobbyists do simple automation systems with the components readily available. If we are more concerned about the reliability and performance of the system, then we can go for the expensive Home Automation Consoles.
Home automation reduces the physical efforts and integrates the control for any number of appliances in to a single control unit. Hence, a simple home automation system is a remote control of different electrical appliances i.e. turning them on or off with the help of a remote.
There are many ways to implement this remote control system. With the extensive use of smart phones and tablets, Bluetooth may be the best option to implement the home automation. And one is implemented here in Bluetooth based Home Automation using Arduino.  The other methods of remote controlled home automation system are ZigBee, Wi-Fi, Radio Frequency (RF Module), GSM etc.

In this project, a simple but efficient home automation system using RF Module (Transmitter – Receiver pair) is designed. The system is designed with Arduino (ATmega 328) as the main processing unit.

Circuit Diagram

The circuit diagram is divided in to the transmitter section and receiver section for easy understanding. The transmitter section of the project is shown on the following image.
Arduino RF Home Auto Transmitter Circuit
The receiver section of the project is shown in the following image.
Arduino RF Home Auto Receiver Circuit

Required Component

The list of components mentioned here are specifically for controlling two different loads. The list of components may vary if the no. of loads is more.
Transmitter Section
  • Arduino UNO
  • 434 MHz RF Transmitter
  • Push Buttons X 4
  • 1 KΩ Resistor X 4
  • Prototyping Board
  • 9V Battery
  • Connecting wires
Receiver Section
  • Arduino UNO
  • 434 MHz RF Receiver
  • 2N2222 NPN Transistor X 2
  • 1 KΩ Resistor X 2
  • 1N4007 PN Junction Diode X 2
  • 12V Relay X 2
  • Prototyping Board
  • Power Supply (Adapter)
  • Connecting wires

Component Description

Arduino UNO:
Two Arduino UNO’s is used in the project, one in the transmitter section which reads the inputs from switches and transmit the message and the other is used in receiver section to decode the message and control the loads.
434 MHz RF Module:
The 434 MHz Radio Frequency Transmitter – Receiver Module is the best and cheapest way to implement a wireless communication for a reasonably longer ranges.
rf-module-pair
Relay Board:
A relay board consists of all the components that are required for a relay to be operated by a microcontroller. A four channel relay board is used although only two relays are used in the practical implementation.

Circuit Design

The design of the circuit is explained with respect to transmitter section and receiver section individually.
Transmitter Circuit Design:
The first component we need to connect to the Arduino UNO is the RF Transmitter module. The data in pin of the RF Transmitter module is connected to the 8th digital I/O pin of Arduino. The other pins of the transmitter module i.e. VCC and GND are connected to 5V and ground pins of the Arduino respectively. An optional antenna wire can be connected to the antenna pin of the transmitter module.
The next step is to connect the push buttons. First, we need to pull down the digital I/O pins 3 through 6 with the help of four 1KΩ resistors. Then connect four switches to these four pins with the other ends of the switches connected to 5V supply.
Receiver Circuit Design:
The RF Receiver receives the data through RF links and must transmit this data to the Arduino. Hence, the data out pin of the receiver module must be connected to digital I/O pin 11 of the Arduino.
The VCC and GND pins of the receiver module are connected to 3.3V and ground pins of the Arduino. An antenna can be connected to the antenna terminal of the module.
If you are using a relay board, as we are in this project, simply connect the digital I/O pins 4 and 5 of the Arduino to the input pins of the relay.
If you are not using the relay board, the connections must be made as per the circuit diagram.
Note: We need to be extremely careful when connecting AC Mains supply to the relay board.

Project Working Process

Home Automation System is a useful and helpful way to manage electrical appliances without any physical contact with the switch. This is possible by utilizing the wireless communication technologies. In this project, an RF based home automation system is implemented using Arduino. The working of the project is explained here.
At the transmitter section, the Arduino continuously monitors the status of the switches (or buttons). Whenever a switch is pressed, a logic HIGH is detected at that particular I/O pin. As a result, the Arduino transmits a suitable message corresponding to the switch pressed.
For example, if LOAD1_ON switch, which is connected to pin 6, is pressed, Arduino detects a logic HIGH at pin 6. Hence, Arduino sends a message as “@ABC$” via the RF transmitter.
At the receiver end, the RF receiver receives this message and transmits the same to Arduino for decoding. When the Arduino at the receiver end decodes the message and understands that the transmitter characters are “@ABC$”, it then writes a HIGH signal on the digital I/O pin 4.
As a result, the relay connected to load 1 is activated and the load is turned on.
Similar actions are performed when other switches are pushed.
If there is any error in the data transmission i.e. the desired data is not transmitted, the Arduino at the receiver section lights up the error LED which is connected to the 13th pin.
A data transmission successful LED and an error buzzer can also be implemented to indicate those actions more efficiently.

Applications

  • Although Bluetooth based home automations are easy to implement as almost everyone has a smart phone, the advantage of the RF based home automation system is the range of communication. RF based system is useful if we have a large house where Bluetooth might go out of range.
  • The system can be expanded to a smart home system with security by integrating several sensors like temperature, humidity, light and security devices like burglar sensors, CCTV’s etc.

Project Images

Code 

For Transmitter Part

#include <VirtualWire.h>
const int RF_TX_PIN = 8;
const int load1_ON = 6;
const int load1_OFF = 5;
const int load2_ON = 4;
const int load2_OFF = 3;
char msg[6] = "";
int load1ON = 0;
int load1OFF = 0;
int load2ON = 0;
int load2OFF = 0;
void setup()
{
vw_set_ptt_inverted(true);
vw_set_tx_pin(RF_TX_PIN);
vw_setup(2000);
pinMode(load1_ON, INPUT);
pinMode(load1_OFF, INPUT);
pinMode(load2_ON, INPUT);
pinMode(load2_OFF, INPUT);
}
void loop()
{
load1ON = digitalRead(load1_ON);
load1OFF = digitalRead(load1_OFF);
load2ON = digitalRead(load2_ON);
load2OFF = digitalRead(load2_OFF);
if (load1ON == HIGH)
{
strcpy(msg, "@ABC$");
}
if (load1OFF == HIGH)
{
strcpy(msg, "@BOFF$");
}
if (load2ON == HIGH)
{
strcpy(msg, "@FON$");
}
if (load2OFF == HIGH)
{
strcpy(msg, "@FOFF$");
}
if(strlen(msg)>0)
{
sendMsg(msg);
}
strcpy(msg, "");
resetLoads();
}
void sendMsg(char msg[])
{
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx();
delay(400);
}
void resetLoads()
{
load1ON = 0;
load1OFF = 0;
load2ON = 0;
load2OFF = 0;
}
For Receiver Part

#include <VirtualWire.h>
const int RF_RX_PIN = 11;
const int load1 = 4;
const int load2 = 5;
const int errorLED = 13;
boolean bload1 = false;
boolean bload2 = false;
void setup()
{
vw_set_ptt_inverted(true);
vw_set_rx_pin(RF_RX_PIN);
vw_setup(2000);
vw_rx_start();
pinMode(errorLED, OUTPUT);
pinMode(load1, OUTPUT);
pinMode(load2, OUTPUT);
bload1 = false;
bload2 = false;
}
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if(vw_get_message(buf, &buflen))
{
delay(500);
messageDecode ( (char *) buf);
delay(500);
}
if(bload1 == true)
{
digitalWrite(load1, HIGH);
}
if(bload1 == false)
{
digitalWrite(load1, LOW);
}
if(bload2 == true)
{
digitalWrite(load2, HIGH);
}
if(bload2 == false)
{
digitalWrite(load2, LOW);
}
}
void messageDecode(char msg[])
{
if (strlen(msg) ==0)
{
ErrorLED();
return;
}
if ( compareMessage(msg, '@') == false || compareMessage(msg, '$') == false)
{
ErrorLED();
return;
}
char cTag[5] ="";
int index =0;
int iLoop = IndexOf(msg,'@');
if(iLoop == -1)
{
ErrorLED();
return;
}
iLoop++;
while (iLoop < strlen(msg))
{
if(msg[iLoop] == '$')
{
break;
}
else
{
cTag[index] = msg[iLoop];
index++;
}
iLoop ++;
}
String sTag = String(cTag);
if (sTag.equals("ABC"))
{
bload1 = true;
}
if (sTag.equals("BOFF"))
{
bload1 = false;
}
if (sTag.equals("FON"))
{
bload2 = true;
}
if (sTag.equals("FOFF"))
{
bload2 = false;
}
}
int IndexOf(char msg[], char tag)
{
if (strlen(msg) ==0) return false;
boolean bFlag = false;
int iIndex = -1;
for( int i=0; i<strlen(msg); i++)
{
if(msg[i]== tag)
iIndex = i;
}
return iIndex;
}
boolean compareMessage (char msg[], char tag)
{
if (strlen(msg) ==0) return false;
boolean bFlag = false;
for( int i=0; i<strlen(msg); i++)
{
if(msg[i]== tag)
bFlag = true;
}
return bFlag;
}
void ErrorLED()
{
digitalWrite(errorLED, HIGH);
delay(500);
digitalWrite(errorLED, LOW);
}

MARI themes

Powered by Blogger.