Rijsnelheid met behulp van een arduino

Met deze ‘How To’ laten we zien hoe je de rijsnelheid controleert met een arduino.
We gebruiken hiervoor een PWM (Pulse Width Modulation) output.
Aangezien deze output voor de rijsnelheid te laag is (5V en max 50mA) maken we gebruik van een externe voeding en een transistor.
De TIP-122 transistor kan een hoger vermogen (5A) en spanning (100V) aan. Je kan ook de TIP-120(60V) of TIP-121(80V) gebruiken.
Kijk hier voor de TIP-120/TIP-122 datasheet.
TIP-122_diagram
TIP-122

Als de spanning weg valt over een motor kan je een tegen EMK krijgen. Deze spanning kan vrij hoog zijn waardoor je verschillende componenten kunt opblazen. Het is dan ook verstandig om een diode (1N4004) over de motor te zetten. Aangezien een motor ook nog wel aardig stoort zetten we hier ook meteen een elco overheen van 1 uF. Dit alles testen we op een testbaantje `rondje om de kerk`

Benodigdheden:

  • Arduino
  • TIP 122 transistor
  • 10K potentionmeter
  • diode 1N4004
  • Elco 1uF
  • Elco 47uF
  • 1K Ohm weerstand (bruin,zwart,rood,goud)
  • Kabeltjes
  • breadboard
  • Externe 16V voeding

Circuit:
De aansluiting is als volgt:
De potentionmeter sluiten we aan op pin A0 (aneloge ingang 0)
De PWM output pin 3 gaat naar de TIP-122 base pin (B) via de 1K ohm weerstand
De TIP-122 emitter (E) connect je aan de massa
De TIP-122 collector (C) gaat naar de rails
Voor het ontstoren en de EMK zetten we over de rails een diode en een elco van 1uF
Over de externe voeding van 16V DC zetten we een elco van 47uF

Let op dat je de massa van de arduino en de externe voeding met elkaar verbind.
De plus van de externe voeding gaat naar de rails.

bliksemsnel_imp_control_speed_railroad_schema

bliksemsnel_control_imp_speed_railroad_bb

Code:

// 'BliksemSnel' modeltrein management
// by Tukker
// Controleer de rijsnelheid met een pwm output

int potPin = 0; // Analog pin 0 connectie naar de potmeter
int railroadPin = 3; // connectie van digitaal pin 3 (pwm) naar de emitor van de transistor
int potValue = 0; // waarde van de potmeter

void setup() {
  pinMode(railroadPin, OUTPUT);
}

void loop() {
  // potValue leest de aneloge waarde van de potmeter en zet die om naar de pwm output
  potValue = analogRead(potPin) / 4;
  analogWrite(3, potValue);
  // een kleine delay voor wat meer stabiliteit
  delay(250);
}

Veel plezier