Category Archives: Arduino
Arduino Arrays and Recursion Tutorial

As a follow up to my DIY Arduino Oscilloscope video or as a stand alone tutorial, this video should help you understand arrays and recursion in Arduino. You can find the original post here: DIY Arduino Oscilloscope with the Nokia 3310 GLCD screen Read More…

Arduino 6 AI temperature scanner with LCD display

I had a need for a temperature scanner to troubleshoot overheating on my Duramax LB7 pickup while towing. A commercial solution to collect 6 temperatures may have run me over a thousand dollars so I ordered some thermistors and for about 40 bucks in parts made one myself. Read More…

Automatic chicken door version two.

As it is getting cold again and my chickens made it through the summer just fine, it is time to revisit and revitalize my automatic chicken door.

The older model was a large door that slid on a track that would get leaves, snow, and ice messing the whole thing up. Also the mecanisim that opened the door was a string that tension was held on with springs, the string would knot up and stop working, blowing the fuse sometimes. Read More…

Arduino Servo Tutorial, Knob and Sweep

In this video I show how to connect a servo to an Arduino and also how to load the sample servo programs included with the Arduino software. The sweep program will drive the arm of the servo back and forth while the Knob program will move the arm of the servo when you turn a potentiometer. Read More…

How to program an Arduino

The absolute beginners guide to programming an Arduino Duemilanove for the first time. I will take you through downloading the Arduino programming software, configuring the software, writing your first program, sending it to the Arduino, and testing operation.

Read More…

GLCD Screen Displaying Live Arduino Analogs

I used a ST7565 GLCD (Graphic Liquid Cristal Display) screen to display the live analog readings from an Arduino.

image

Here is the Arduino library: ST7565_GLCD_LIbrary

The ST 7565 I picked up on Adafruit for about 16 bucks. I couldn’t find any examples to help put the analog values on the screen, worse yet the screen can’t display real values, I had to convert them to strings.

It was something that an Arduino pro probably could have whipped out in no time but it took me many hours.

Hopefully this can help someone.

Arduino Electronic Speed Control ESC 2 of 2

Here is my second ESC or Electronic Speed Control that I built with an Arduino Duemilanove. You can’t just hook DC up to Brushless DC Motors that you have scavenged out of old CDROM drives, hard drives, or printers and expect them to spin.  Brushless DC motors require you to use a motor controller to produce a three phase DC square wave.

image

This project is just like my last ESC circuit but I have added a potentiometer for speed control. For more detailed information check out the last ESC post and video as well.Here are the project files including schematic and sketch.

PDF’s:Arduino ESC2.0

ZIP:ArduinoESC2.0

 


Here is the Arduino sketch.

——————————————————————

/*
 
Brushless DC Motor Control ESC 2.0
 
This sketch cascades 6 outputs which when connected properly
 can generate a three phase square wave which can in turn run
 a brushless DC motor.
 
This circuit has advanced from my Brushless DC Motor Control
 ESC 1.0 because I have added a speed control potentiometer
 to control the motor speed.
 
I suggest that you not try to run a motor directly off of the outputs
 of the Arduino but use some transistors to handle the load.
 
For the schematic and supporting documents for this project go to
 
http://filear.com
 
Made by Fileark. 2010-0826
 
*/
 // Here we are declaring six variables called led 1 through led6
 // We are also assigning the variables to the physical discrete pins
 // Outputs can be any outputs you want
 int led1 =  0;
 int led2 =  1;
 int led3 =  2;
 int led4 =  3;
 int led5 =  4;
 int led6 =  5;
 int potpin = 0;  //This is the analog input for the pot
 int val;         //This is the val varible for the speed
 
// The setup() method runs once, when the sketch starts
 
void setup()   {
 // initialize the digital pin as an output:
 pinMode(led1, OUTPUT);
 pinMode(led2, OUTPUT);
 pinMode(led3, OUTPUT);
 pinMode(led4, OUTPUT);
 pinMode(led5, OUTPUT);
 pinMode(led6, OUTPUT);
 }
 
// the loop() method runs over and over again,
 // as long as the Arduino has power
 /*
 LESD1, LED3, and LED5 will be positive, LED2, LED4, and LED6 are negative.
 You will notice that two LEDs are on at the same time so that one of the
 three motor coils are energised at a time.
 */
 void loop()
 {
 val = analogRead(potpin);   // reads the pot and assigns the value to “val”
 digitalWrite(led5, LOW);    // set the fifth LED off
 digitalWrite(led1, HIGH);   // set the first LED on
 delay(val);                 // wait for a period of time
 digitalWrite(led6, LOW);    // set the sixth LED off
 digitalWrite(led2, HIGH);   // set the second LED on
 delay(val);                 // wait for a period of time
 digitalWrite(led1, LOW);    //repeat ect.
 digitalWrite(led3, HIGH);
 delay(val);
 digitalWrite(led2, LOW);
 digitalWrite(led4, HIGH);
 delay(val);
 digitalWrite(led3, LOW);
 digitalWrite(led5, HIGH);
 delay(val);
 digitalWrite(led4, LOW);
 digitalWrite(led6, HIGH);
 delay(val);
 }

 

Arduino Electronic Speed Control ESC 1 of 2

Here is my first ESC or Electronic Speed Control that I built with an Arduino Duemilanove. If you don’t already know, the best motors you can scavenge out ov CDROM drives or old hard drives are Brushless DC motors that you can’t just hook DC up to and make it spin. Brushless DC motors require you to use a motor controller to produce a three phase DC square wave. Brushless DC motors are almost identical in nature to three phase AC motors. As you can imaging it is not that easy to create a three phase square wave and I couldn’t find any really good easy examples online so here you go. If you are interested in building your own download the schematic, sketch, and some PDFs I found with good information all zipped up here.

PDFs: Arduino ESC1.0

ZIP: ArduinoESC1.0

image

Before you start let me say that the Arduino can not handle the current necessary to turn the motor so transistors are required to keep the Atmega chip from smoking. Also, as a safety precaution I usually use something like 1K resistors coming off of the outputs of the Arduino to help protect the board from short circuit.

You can purchase a retail ESC for RC hobby motors (RC planes, boats, and cars) for anywhere from $10.00 to $200.00 depending on the quality and amperage rating.  I doubt that a home made ESC will come even close to the quality of a commercial product but it is fun to try.


Here is the Arduino sketch.

________________________________________________

/*
 
Brushless DC Motor Control ESC 1.0
 
This sketch cascades 6 outputs which when connected properly
 can generate a three phase square wave which can in turn run
 a brushless DC motor.
 
I suggest that you not try to run a motor directly off of the outputs
 of the Arduino but use some transistors to handle the load.
 
For the schematic and supporting documents for this project go to
 
http://filear.com
 
Made by Fileark. 2010-0826
 
*/
 // Here we are declaring six variables called led 1 through led6
 // We are also assigning the variables to the physical discrete pins
 // Outputs can be any outputs you want
 int led1 =  0;
 int led2 =  1;
 int led3 =  2;
 int led4 =  3;
 int led5 =  4;
 int led6 =  5;
 
// The setup() method runs once, when the sketch starts
 
void setup()   {
 // initialize the digital pins as outputs
 pinMode(led1, OUTPUT);
 pinMode(led2, OUTPUT);
 pinMode(led3, OUTPUT);
 pinMode(led4, OUTPUT);
 pinMode(led5, OUTPUT);
 pinMode(led6, OUTPUT);
 }
 
// the loop() method runs over and over again,
 // as long as the Arduino has power
 /*
 LESD1, LED3, and LED5 will be positive, LED2, LED4, and LED6 are negative.
 You will notice that two LEDs are on at the same time so that one of the
 three motor coils are energised at a time.
 */
 void loop()
 {
 digitalWrite(led5, LOW);    // set the fifth LED off
 digitalWrite(led1, HIGH);   // set the first LED on
 delay(200);                 // wait for a period of time
 digitalWrite(led6, LOW);    // set the sixth LED off
 digitalWrite(led2, HIGH);   // set the second LED on
 delay(200);                 // wait for a period of time
 digitalWrite(led1, LOW);    //repeat ect.
 digitalWrite(led3, HIGH);
 delay(200);
 digitalWrite(led2, LOW);
 digitalWrite(led4, HIGH);
 delay(200);
 digitalWrite(led3, LOW);
 digitalWrite(led5, HIGH);
 delay(200);
 digitalWrite(led4, LOW);
 digitalWrite(led6, HIGH);
 delay(200);
 }

Previous Page