Category Archives: Fritzing

Motor DC Control (1 direction only) Using ULN2803 (Darlington Array Transistor)

by : Antonius (@sw0rdm4n)

http://www,ringlayer.net

Part List(s)
– 1 Ceramic Disc Capacitors 50V 100nF
– 1 Mini Breadboard
– 1 uln2803
– Arduino / any compatible board
– 1 Tamiya single Gearbox
– 2 Wheel for tamiya gearbox
– Jumper Wires
– 6 v battery holder
– 4 x 1,5v battery
– 1 dc motor (toy)
– Soldering iron and tin

ULN 20803 is a darlington array transistor with 8 channel(s) suitable to control devices up to 500mA , 50v, the specification can be downloaded from here http://www.adafruit.com/datasheets/ULN2803A.pdf.

Here in this example we will use uln2803 to control a motor dc that uses single gearbox, since uln2803 isn’t a h-bridge so we will only able to control it with single direction ( for h-bridge, we may use tlc5940 ).

Here’s uln2803 pins:

uln2803

In this example, we will be using pin 1 as pwm pulse receiver from arduino pin 7 output. and pin 9 will be for ground connect to arduino’s ground. How to locate where’s pin 1 and another ? We can see on uln2803 that it has a “U” sign. The “U” sign determines that pin 1 is located on the left of that “U” sign.

First Step
Plug and solder jumper wire and ceramic disc capacitor into motor dc as follow:

uln1

Next plug the dc motor into tamiya single gearbox and plug some wheels. Here comes it :

x

As if this is a small vehicle, but it has no steering capabilities.

Second Step

connect pin 1 on uln2803 with pin 7 on arduino and connect ground pin (9) on uln2803 to ground pin on arduino.

20141118_065032

Next, connect both jumper from motor dc to pin 18 and pin 10 on uln2803

correct1

Next, connect ground from battery to ground pin 9 on uln2803, plug it beside ground pin from arduino, and plug volt from battery to pin 10 on uln 2803, plug it besides motor dc jumper wire as follow:

correct2

Final step is to upload this code:

int motor = 7;
void setup() {                
   pinMode(motor, OUTPUT);   
}

void loop() {
   digitalWrite(motor, HIGH);
   delay(300);   
   digitalWrite(motor, LOW);
   delay(1000);   
}

Once everything done, we can move the motor each 1 second about 0,3 second as follow:

Advertisements

Traffic Light With Push Button Control

This is simple electronic project with prototyping (no solder requirement), we’ll be using arduino and a push button to control a traffic light (rgb led)

Fritzing

traffic_schematic

Hardware Requirements:

4 resistor 220 Ω , 1 resistor 10 k Ω, 1 breadboard, 3 led (red, green, blue), 1 arduino, 6 jumper  wires,  1 push button

Fritzing

traffic1

traffic2

traffic3

we use 220 ohm resistor for each led and we connect it to arduino using pwm pin 8, 9 and 10, connect 10 k ohm resistor to push button , red jumper wire for push button connected to 5v pin on arduino, meanwhite black jumper wire connected to pwm pin 7 on arduino. the last black jumper wire we connect to ground pin on arduino.

We use breadboard here to make it easy, we don’t need to solder each component.

Arduino IDE Code

trafik4

trafik5

Here’s  complete code :

/*
traffic light dengan saklar on off - made by Antonius (@Sw0rdm4n)
http://www.ringlayer.net
*/
int merah = 8;
int kuning = 9;
int hijau = 10;
int saklar = 7; 
int on = 0;
int i;
void setup() {
	pinMode(merah, OUTPUT); 
	pinMode(kuning, OUTPUT); 
	pinMode(hijau, OUTPUT); 
	pinMode(saklar, INPUT);
}
void _run()
{
      digitalWrite(hijau, HIGH);
      delay(4000);  
      digitalWrite(hijau, LOW);
}
void _slow()
{
      digitalWrite(kuning, HIGH);  
      delay(2000);
      digitalWrite(kuning, LOW);  
}
void _stop()
{
    digitalWrite(merah, HIGH);
    delay(4000);  
    digitalWrite(merah, LOW);
}

void _traffic_light()
{
    do
    {
      _run();
       on = digitalRead(saklar); 
       if (on == 0) {
         _traffic_down();
       }    
       else {  
              _slow();
              on = digitalRead(saklar);   
               if (on == 0) {  
                  _traffic_down(); 
               }
               else {
                   _stop();
                   on = digitalRead(saklar);     
                   if (on == 0) {  
                      _traffic_down(); 
                   }
                   else {
                          _slow();
                   } 
               }
       }        
       on = digitalRead(saklar);     
    } while(on == 1);
}
void _traffic_down()
{
      for (i = 8;i < 11; i++) {
           digitalWrite(i, LOW); 
      }
}
void loop(){
	on = digitalRead(saklar);     
        Serial.println(on);
        if (on == 1) {
            _traffic_light();          
	} else {
            _traffic_down();
	}
        delay(500);
}

On success we can have a traffic light led that we can control with push button.