Introduction: Bestuurbare Ventilator

Dit project is gemaakt door Oliver Kersten, 0897142, Electrotechniek.

In het keuzevak smart object is het de bedoeling om een bestaand apparaat slimmer, handiger of mooier te maken. Mijn idee is om een ventilator bestuurbaar te maken. Dit is omdat bijna alle ventilatoren knopjes erop hebben om hem aan of uit te zetten en welke stand hij moet draaien, terwijl dit anno 2015 ander zou moeten kunnen. Dus ga ik een bestuurbare ventilator bouwen, die bestuurd wordt door een tv afstandsbediening.

Specificaties

- De ventilator moet net zo als een tv aan en uit worden gezet.

- De ventilator gaat 3 standen hebben, 1 langzame, 1 snellere en 1 snelste.

Hoe werkt mijn project: Door de aan of uit knop in te drukken op de tv afstandsbediening gaat een relay open, vervolgen een stroom naar de L298N motor drive module lopen. Deze module stuurt de motoren aan waardoor ze vooruit, achteruit gaan of de snelheid geregeld kan worden. Door op de knoppen 1, 2 of 3 te drukken gaat 1 van de verschillende snelheids-standen van de ventilator in werking. De ventilator bestaat uit 2 motoren, 1 motor die de ventilator bladen aanstuurt, en eentje die ervoor zorgt dat de ventilator kan draaien.

Welke onderdelen heeft u nodig voor dit project?

- een Arduino Uno

- een IR sensor

- een TV afstands bediening

- een L298N motor drive module

- een servo motor

- een 3V dc motor

- een breadboard

- breadboard wires

- voor de afwerking een behuizing, dit is mijn idee ervoor maar dit kunt u ook zelf gaan bedenken.

Misschien is het nu nog onduidelijk wat ik bedoel maar als u alle stappen uitvoert wordt het vanzelf duidelijk.

Step 1: Infrarood Signalen Uitlezen

Zoals ik eerder had gezegd ga ik een tv afstandsbediening gebruiken om mijn project te besturen. Iedere tv afstandsbediening werkt op infrarood signalen. In je tv afstandsbediening zit een infrarood emitter, dit verstuurt de infrarood signalen. Deze infrarood signalen worden ontvangen door een IR sensor. In deze IR sensor worden de IR signalen omgezet in HEXADECIMALE getallen. Iedere knop op de tv afstandsbediening heeft een andere hexadecimale waarde. Door een micro-controller/ arduino zo te programmeren kan hij een functie gaan uitvoeren wanneer hij een bepaalde hexadecimale waarde ontvangt, zo kan een motor aangaan, een led of een ander tv programma opzetten. Dus moeten wij te weten komen wat de hexadecimale waarde van iedere knop op de tv afstandsbediening is, zodat wij een IF statement kunnen maken. Om de IR signalen uit te lezen heb je een arduino nodig, een IR sensor, een tv afstandsbediening en een aantal draadjes. Iedere IR sensor heeft 3 pinnen, een Vin, deze moet op de + 5 volt uitgang van de arduino worden aangesloten, een ground, deze moet met de ground van de arduino worden verbonden en een Vout, deze moet op pin 11 van de arduino worden aangesloten. Er zijn veel verschillende IR sensoren te koop, en iedere IR sensor is anders gebouwd. Dus zoek de datasheet op van de IR sensor en sluit dan pas de juiste arduino pinnen er op aan. Om de IR signalen uit te lezen op je arduino moet je een speciale libary downloaden. Deze kunt u vinden in de bijlage op deze pagina, vervolgens download u die, en installeer u deze libary in de arduino software. Hoe u de libary installeert kunt u vinden op de arduino software. In de IR libary map vind u eenn file IRrecDemo, door deze code up to loaden naar de arduino kunt u IR signalen uitlezen in de seriele monitor.

Vervolgens schrijf je op een blaadje alle knopen met bijbehorende hexadecimale getallen.

Step 2: Motor Voor De Ventilator Bladen

Nu dat we hebben bepaald wanneer de arduino een functie moet uitvoeren, hebben we nog iets nodig in de functie dat hij kan uitvoeren. In de functie moeten de motoren op van de ventilator worden aangezet. Zoals ik gezegd had bestaat de ventilator uit 2 motoren uit een 3V dc motor voor de ventilatie bladen en een servo motor voor de draai van de ventilator. 3V dc motoren mogen nooit direct op een arduino worden aangesloten, dit omdat de arduino uit zijn digitale pinnen een maximale amperage van 30 mili ampère kan leveren. Dit in vergelijking tot de 3V dc motor die ongveer een halve ampere nodig heeft om optimaal te kunnen functioneren. Dus al u de motoren direct op de arduino aansluit zal de arduino waarschijnlijk doorbranden. Dus moet er een module tussen de arduino en de motoren komen wat wel de juiste piek stroom aan de motoren kan leveren. Dit kan worden volbracht met een h-brug IC L298D, met deze module kunt u motoren vooruit, achteruit en en snelheid regelen van de motoren. Door de 2 pinnen van de arduino aan te sluiten op pin in3 en in4, door een van deze twee pinnen HIGH te maken gaat de motor vooruit, en omgekeerd. Op de module is ook een enA pin, met deze pin kan de snelheid aangepast worden van de motoren. Dit kan geregeld worden met een PWM signaal, dit bepaald hoelang de motoren aan en uit staan dus ook de snelheid.

hoe zien de verschillende snelheden eruit in de functie:

Met analogWrite kan de snelheid van de motoren geregeld worden, dit kan tussen 0 en 255. 0 is uit en 255 is op zijn aller snelst. Hieronder vind u hoe de snelheid van de ventilator bladen in stand 1. In deze code trekt te ventilator bladen op tot een bepaalde snelheid en blijft dan op die snelheid. Ik heb gekozen om dit te zetten in een aparte void functie in plaats van in de void loop, omdat de arduino de functie dan niet goed uitvoert in de void loop.

void motorspeed1()

{

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH); // accelerate from zero to speed one

for (int i = 0; i < 100; i++)

{

analogWrite(enA, i); delay(50);

}

}

Step 3: Servo Motor Voor Het Draaien Van De Ventilator

de servo motor zorgt voor de draaiing van de ventilator. De servo heeft 3 aansluit pinnen, een plus die moet aangesloten worden op de 5V van de arduino, de min op de ground van de arduino, en de input pin deze moet aangelsoten worden op een pwm pin dit kunt u zelf bepalen welke pin dit is. In arduino software vind u de code voor servo sweep. Met deze code kunt u de servo 90 links als rechts laten draaien.

mocht u de code niet kunnen vinden in de arduino software, dan kunt u hem vanuit hieronder kopiëren. Door de delay tijd van de servo motor aan te passen, past u ook gelijk de snelheid waarmee de servo heen en weer beweegt aan.

#include
Servo myservo; // create servo object to control a servo

// twelve servo objects can be created on most boards

int pos = 0; // variable to store the servo position

void setup()

{

myservo.attach(9); // attaches the servo on pin 9 to the servo object

}

void loop()

{

for(pos = 0; pos <= 180; pos += 1) // goes from 0 degrees to 180 degrees

{ // in steps of 1 degree

myservo.write(pos); // tell servo to go to position in variable 'pos'

delay(15); // waits 15ms for the servo to reach the position

}

for(pos = 180; pos>=0; pos-=1) // goes from 180 degrees to 0 degrees

{

myservo.write(pos); // tell servo to go to position in variable 'pos'

delay(15); // waits 15ms for the servo to reach the position

}

}

Step 4: Arduino Code

In de bijlage vind u de arduino code die nodig is om mijn project te laten werken.

Step 5: Hoe Ziet Het Project Er Nu Uit?

In het bovenstaande plaatje kunt u zien hoe mijn project eruit komt te zien, en in de bijlage vind u een filmpje hoe mijn project werkt.