dinsdag 5 maart 2013

Pull-up en pull-down weerstanden

Als je een drukknop wil gebruiken als input voor bijvoorbeeld een micro controller kun je dat op twee manieren doen.

de pull-up configuratie:

Hierbij is Vout standaard richting de Vin ( ofwel HOOG ) getrokken, en bij het sluiten van de schakelaar word Vout naar nul ( LAAG ) getrokken.










de pull-down configuratie:


Hierbij is Vout standaard richting de nul ( ofwel LAAG) getrokken, en bij het sluiten van de schakelaar word Vout naar Vin( HOOG) getrokken.










Wanneer nou wat te gebruiken?
Je zou je af kunnen vragen wanneer je nou welke schakeling moet gebruiken. Dit is simpel een kwestie van  wat de gebruiker prettig vind. Wil je dat de output standaard hoog is en door middel van de schakelaar laag? dan gebruik je pull-up en wil je het andersom dan gebruik je pull-down,




maandag 4 maart 2013

Lijndetectie met CNY70


Proefopstelling CNY70

















Voor de eerste proefopstelling heb ik één CNY70 aangesloten op mijn arduino om eens te gaan kijken welke waardes er binnen zouden komen op de microcontroller.

De CNY70 bestaat uit een infrarood LEDje en een fototransistor in één behuizing. Ook zit er op de voorkant een laagje dat een groot deel van normaal “daglicht” weg filtert. Als dus de IF-LED aan staat word er een deel van de licht weer teruggekaatst en door de fototransistor opgevangen waardoor er meer stroom gaat lopen van Emitter naar Collector.

Als voorbeeld heb ik onderstaand schema gebruikt voor het aansluiten van de CNY70 op de arduino:




















Op dit schema is de IF-LED via een 220 ohm weerstandje aangesloten op de +5v van de arduino.
De fototransistor is via een spanningdeling aangesloten op een analoge ingang van de arduino.
Op die manier krijgt de arduino een nette 0 – 5 volt binnen afhankelijk van de hoeveelheid ligt die op de fototransistor valt.

Via de Seriële monitor is op een computerscherm exact af te lezen hoeveel spanning er binnen komt. Dit gaat met een precisie van  0 tot 1023 (0 – 5v).

Verder vond ik het handig om ook zonder computer een indicatie te hebben van de meetwaarden dus besloot ik 10 LED’s op de uitgangen aan te sluiten die via een comperrator oplichten bij een bepaalde waarde.

Ook heb ik een voltmetertje aangesloten op de analoge ingang van de arduino om te kunnen monitoren welke spanning er aanwezig is.

Tot slot leek het me handig om nog een potmeter in te bouwen die ervoor zorgt dat als de auto zich in een lichte ruimte bevindt de waarden een beetje kunnen worden aangepast.


Monitor analoge inganswaarden:
















Programma arduino:

int x = 10;                               // meetsnelheid

int sensor = A0;                      // fototransistor
int potm = A1;                        // potmeter 10K
int schakelaar = 1;                 // drukknop
int IFled = 2;                           // infraroodLED

int a = 3;                                 // indicatieLED a
int b = 4;                                                // indicatieLED b
int c = 5; ;                               // indicatieLED c
int d = 6;                                                // indicatieLED d
int e = 7;                                                // indicatieLED e
int f = 8;                                 // indicatieLED f
int g = 9;                                                // indicatieLED g
int h = 10;                               // indicatieLED h
int i = 11;                                // indicatieLED i
int j = 12;                                // indicatieLED j


void setup(){
 
  pinMode(sensor, INPUT);
  pinMode(potm, INPUT);
  pinMode(schakelaar, INPUT);
  pinMode(IFled, OUTPUT);
 
  pinMode(a, OUTPUT);
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(g, OUTPUT);
  pinMode(h, OUTPUT);
  pinMode(i, OUTPUT);
  pinMode(j, OUTPUT);
 
  Serial.begin(9600);              //Seriele monitor baudrate

}
void loop (){
 
  if (schakelaar = HIGH) {digitalWrite(IFled, HIGH);}
  if (schakelaar = LOW) {digitalWrite(IFled, LOW);}
   
  int sensorValue = analogRead(A0);
  int potmValue = analogRead(A1);
  int combiValue = (sensorValue);
 
  // print sensorValue op de seriele monitor:
   Serial.println(combiValue);
  
  delay(x);
 
  if (combiValue < 1000) {digitalWrite(a, HIGH);}
  if (combiValue > 1000) {digitalWrite(a, LOW); }
 
  if (combiValue < 900) {digitalWrite(b, HIGH);}
  if (combiValue > 900) {digitalWrite(b, LOW); }
 
  if (combiValue < 800) {digitalWrite(c, HIGH);}
  if (combiValue > 800) {digitalWrite(c, LOW); }
 
  if (combiValue < 700) {digitalWrite(d, HIGH);}
  if (combiValue > 700) {digitalWrite(d, LOW); }
 
  if (combiValue < 600) {digitalWrite(e, HIGH);}
  if (combiValue > 600) {digitalWrite(e, LOW); }
 
  if (combiValue < 500) {digitalWrite(f, HIGH);}
  if (combiValue > 500) {digitalWrite(f, LOW); }
 
  if (combiValue < 400) {digitalWrite(g, HIGH);}
  if (combiValue > 400) {digitalWrite(g, LOW); }
 
  if (combiValue < 300) {digitalWrite(h, HIGH);}
  if (combiValue > 300) {digitalWrite(h, LOW); }

  if (combiValue < 200) {digitalWrite(i, HIGH);}
  if (combiValue > 200) {digitalWrite(i, LOW); }
 
  if (combiValue < 100) {digitalWrite(j, HIGH);}
  if (combiValue > 100) {digitalWrite(j, LOW); }
 
}




Testen
Vervolgens was het tijd om het zooitje maar eens te gaan testen.
Ik besloot een kleurenstrookje te nemen en eens te kijken welke waarde nou bij welke kleur binnenkwam. Dit zijn mijn resultaten:

Blauw:
85
Groen:
70
Geel:
62
Rood:
90
Zwart:
777
Wit:
59

Wat mij hierbij vooral opvalt, is dat eigenlijk zwart verreweg het meeste contrast heeft in verhouding tot de rest van de kleuren. Mijn hypothese was dat wit vrijwel alles terug zou kaatsen en de andere kleuren juist veel zouden opnemen. Uit bovenstaande resultaten blijkt dus dat ik het verkeerd had. We kunnen dus overwegen om een zwarte streep te kiezen i.p.v. een witte om zo een duidelijker verschil te hebben in analoge meetwaarden.


Spoorweglampen

Spoorweglampen
Altijd als eens een knipperlichtje willen maken? of spoorweglampen voor je modelbouwclub? dan is dit een leuke en vrij eenvoudige schakeling die gebruikt maakt van een 555 IC om 2 of meer led's om de beurt te laten knipperen.




















Afstellen
Wat er hier gebeurt is dat de uitgang van de 555 timer steeds naar hoog en naar laag word getrokken.
daardoor gaan de leds om de beurt aan en uit. Door de 47K weerstand variabel te maken of de capaciteit van de condensator aan te passen is de knipper snelheid in te stellen.




Breadboardversie




Symmetrische Voeding

Spanningsdeler
Onlangs was ik aan het stoeien met een schakeling waarin een opamp gebruikt werd als comparator. Ik dacht "oh dan gebruik ik gewoon een spanningsdeler".

Ik sloot 2 weerstanden van 470 ohm aan op een spanningsbron van 9V

U_2 = U * \frac{R_2}{R_1 + R_2}

voor R1 = R2 = 470 ohm komt hier 0,5 uit.


tussen U1 en U2 staat dus beide 4,5 Volt.
Mooi, dacht ik en ik besloot mijn schakeling aan te sluiten.
Hè het werkt niet? de spanning zakt in elkaar..

Logisch toch? Als ik parallel aan R1 of aan R2 een belasting ofwel weerstand hang dan verandert de weerstandswaarde.

Mooie oplossing
De symmetrische voeding zorgt ervoor dat de spanning niet in elkaar zakt.
zie hier het schema:






De opamp zorgt ervoor dat de spanning aan de uitgang steeds netjes word bijgeregeld, zelfs als er een belasting word aangesloten. Let er wel op dat de uitgangsstroom van de opamp niet de maximale waarde van de opamp mag overschrijden. deze is bji de 741 maar 20 mA.

Deurbel


Deurbel
Gisteren bezig geweest met een deurbel schakeling die gebruik maakt van een 555 timer.
Het is een simpele schakeling om mee te experimenteren en ik had toevallig nog een aantal 555 ic's liggen.



het gebruikte schema
Door met de waardes van R1 en R2 te spelen kan de toonhoogte van de speaker worden ingesteld. Ook is de waarde van de keramische condensator van invloed op de toonhoogte (ofwel de frequentie) die de 555 op zijn uitgang geeft.









Tussentijdse foto van mijn breadboardje
Zoals te zien is heb ik ook een LED met een serieweerstand van 470 ohm parralel gezet aan de schakeling, dit ter indicatie dat er spanning aanwezig is, want bij hoge frequentie kun je de speakertonen niet meer horen.









Breakout versie
Uiteindelijk heb ik er een breakoutversie van gemaakt nadat ik de toon naar smaak had afgesteld. Alles netjes dicht bij elkaar op het bordje gesoldeerd. Het resultaat mag er wezen!