Verkeerslichten voor de kids

Als U een gezamenlijk project wil starten of aan projecten van anderen mee wilt werken.
Berichten: 7
Geregistreerd: 19 Nov 2012, 10:57

Verkeerslichten voor de kids

Berichtdoor werkt-nu » 19 Nov 2012, 11:15

Wie wil mijn helpen met mijn verkeerslichtenschakeling uitebreiden cq te verbeteren (aantepassen) aan mijn wensen?

ik heb een schakeling gevonden waar ik mijn ledjes mee aanstuur voor een kruising maaarr nu wil ik het buiten in het klein voor de kids maken kunnen ze al een beetje door rood leren rijden ;) ik heb kleine verkeerslichtjes in de maak
met led schijnwerpers er in dus een relai aansturen maar hoe doe ik dit? ivm te zware belasting op de arduino (ik heb helaas geen electronica kennis maar ben wel een beetje slim :D

oja ik heb een velleman vm129 relaiskaart die zou ik graag aansturen met een beetje hulp :idea:

alvast bedankt
piet

Advertisement

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: Verkeerslichten voor de kids

Berichtdoor pjh » 21 Nov 2012, 10:59

Ik heb even gekeken naar die velleman vm129. Vind geen datasheet na kort zoeken.
Lijkt erop dat je de ingangen het beste kunt aansturen met een transistor.

Dan pak je 8 x een NPN transistor, bijvoorbeeld 2N2222 (http://nl.rs-online.com/web/p/bipolar-transistors/5449624P/
De buitenste poten steek je in de respectievelijke ingangen van de 8 relais.
De middelste poten (base) vebind je via een 100 KOhm weerstand met de arduino.

==> iemand betere suggesties? <==

Berichten: 7
Geregistreerd: 19 Nov 2012, 10:57

Re: Verkeerslichten voor de kids

Berichtdoor werkt-nu » 23 Nov 2012, 12:48

he bedankt voor de reacktie!

als ik het goed begrijp wordt de middelste gestuurd door de arduino, en de buitenste is 1 kant de voeding min 12 volt continue, en de anderekant het relais (hij wordt met min gestuurd namelijk)

groet, piet

Berichten: 4
Geregistreerd: 15 Okt 2012, 23:09

Re: Verkeerslichten voor de kids

Berichtdoor spran062 » 23 Nov 2012, 14:35

Als je de Relay Shield ( 4 relais) gebruikt die prik je op de Anduro shield , even de juiste uitgangen programmeren en klaar is kees
Dan kan je via de relais contacten de lampen aansluiten of led aansturen op jou voeding spanning die je wil.

Berichten: 7
Geregistreerd: 19 Nov 2012, 10:57

Re: Verkeerslichten voor de kids

Berichtdoor werkt-nu » 23 Nov 2012, 15:47

beste span062

ik heb het relais shield alleen ik weet nog niet hoe ik hem aan moet sturen (maar dat komt nog wel) echter ik heb 6 relais nodig dus vandaar dat ik graag weet hoe aan te sluiten (het relaiskaartje werkt met een MIN stuurdraad op 12 volt.

groet Piet

Berichten: 4
Geregistreerd: 15 Okt 2012, 23:09

Re: Verkeerslichten voor de kids

Berichtdoor spran062 » 23 Nov 2012, 18:28

als je de software voor deze shield download , en je neemt de volgende file RelayShield.pde,
daar zie je welke digitale uitgangen worden gebruikt (2,3,4,5)
Als je gegeven in jou software programmeer dan hoef je allen het relais-shield boven op de anduino in te steken,
de relais shield heeft een eigen voeding nodig.
// voorbeeld relais aansturen
void setup () {
Serial.begin(57600);
Wire.begin();
RTC.begin();
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,INPUT);
}
onst int groen = 2;
const int rood = 3;

if (xxxxx)
{
digitalWrite(groen,LOW);
digitalWrite(rood,HIGH);

Berichten: 7
Geregistreerd: 19 Nov 2012, 10:57

Re: Verkeerslichten voor de kids

Berichtdoor werkt-nu » 26 Nov 2012, 17:17

Beste,

bedankt voor de snelle racktie maar ik moet 6 uitgangen aansturen! en het shield heeft maar 4 relais!

groet piet

/*

Traffic lights

Uses 6 leds (2 x orange, red and green) to simulate traffic lights. Initializes the program by blinking all leds 3 times

*/
int arrLedPins[] = {13,12,11,10,9,8};
int intLedPins = 6;

int arr13[] = {LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH};
int arr12[] = {HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW};
int arr11[] = {LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW};
int arr10[] = {HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW};
int arr9[] = {LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,LOW,LOW};
int arr8[] = {LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,LOW,HIGH,HIGH};
int steps = 24;
int counter = 0;

boolean ledTestExecuted = false;

void setup() {
// initialize all led output pins
int i;
for (i = 0; i < intLedPins; i = i + 1) {
pinMode(arrLedPins[i], OUTPUT);
}
}

void loop() {
// Led test executed
if (!ledTestExecuted) {
// blink all leds 3 times
// necessary for checking if all leds are still functioning
int i, j;
for (i = 0; i < 3; i = i + 1) {
for (j = 0; j < intLedPins; j = j + 1) {
digitalWrite(arrLedPins[j], HIGH);
}
delay(200); // wait one second
for (j = 0; j < intLedPins; j = j + 1) {
digitalWrite(arrLedPins[j], LOW);
}
delay(200); // wait one second
}
ledTestExecuted = !ledTestExecuted;
}
else {
if (counter > (steps - 1)) {
counter = 0;
}
int j, ledStatus;
for (j = 0; j < intLedPins; j = j + 1) {
if (arrLedPins[j] == 13) {
ledStatus = arr13[counter];
}
else if (arrLedPins[j] == 12) {
ledStatus = arr12[counter];
}
else if (arrLedPins[j] == 11) {
ledStatus = arr11[counter];
}
else if (arrLedPins[j] == 10) {
ledStatus = arr10[counter];
}
else if (arrLedPins[j] == 9) {
ledStatus = arr9[counter];
}
else {
ledStatus = arr8[counter];
}
digitalWrite(arrLedPins[j], ledStatus);
}
counter = counter + 1;
delay(1000);
}
}

Berichten: 27
Geregistreerd: 23 Feb 2013, 12:07

Re: Verkeerslichten voor de kids

Berichtdoor walker » 23 Feb 2013, 15:35

Hallo Piet,

De Velleman VM129 is opgebouwd rond de p8056 print, deze wordt ook bij de k8056 gebruikt en hiervan is een schema beschikbaar:
http://www.velleman.eu/downloads/0/illu ... _k8056.pdf

Door nu op de print p8056 (VM129) T1 t/m T8 (transistor BC547) en R2, R5, R7, R9, R11, R15, R16 en R17 (weerstand 10 k) te solderen, is het mogelijk de relais m.b.v. de Arduino aan te sturen. Je kunt dan bijv. draden in de aansluitingen van IC 1 solderen die dan naar de Arduino gaan.

IC 1:
pin 5: RY1 (SK2)
pin 6: RY2 (SK3)
pin 13: RY3 (SK4)
pin 12: RY4 (SK5)
pin 10: RY5 (SK6)
pin 9: RY6 (SK7)
pin 8: RY7 (SK8)
pin 7: RY8 (SK9)

Gebruikers-avatar
Berichten: 229
Geregistreerd: 20 Jan 2013, 12:01

Re: Verkeerslichten voor de kids

Berichtdoor astrofrostbyte » 24 Feb 2013, 19:11

Als ik je schakelsequentie doorloop zie ik dat er bepaalde combinaties gecombineerd kunnen worden.
Kijk bv eens naar Led13 en Led10 , deze zijn geinverteerd van elkaar. En zo zitten er nog meer combinaties in.

De hele sequentie lijkt te coderen te zijn met 3 wisselcontact relays : http://i47.tinypic.com/2j14yo4.jpg
Bijbehorende waarheidstabel: (ook ff nalopen)
Code: Alles selecteren
ARR13  ARR11  ARR8    LED13   LED12   LED11   LED10   LED9    LED8
0      0      0       UIT     AAN     UIT     AAN     UIT     UIT
0      0      1       UIT     AAN     UIT     AAN     UIT     UIT
0      1      0       UIT     UIT     AAN     AAN     UIT     UIT
0      1      1       UIT     UIT     AAN     AAN     UIT     UIT

1      0      0       AAN     UIT     UIT     UIT     AAN     UIT
1      0      1       AAN     UIT     UIT     UIT     UIT     AAN
1      1      0       AAN     UIT     UIT     UIT     AAN     UIT
1      1      1       AAN     UIT     UIT     UIT     UIT     AAN


Een andere tip om de code wat compacter te krijgen is om 2 dimentionaale Arrays te gebruiken, hieronder de voorbeeldcode:
Code: Alles selecteren
const char nrLeds = 6;
const char nrStates = 24;
int pinarr[nrLeds] = { 13,12,11,10,9,8};
int arr[nrLeds][nrStates] = {
    {  0,0,0,0,0,0,0,0,0,0,0,0, 1,1,1,1,1,1,1,1,1,1,1,1},   //pin13
    {  1,1,1,1,1,1,1,1,1,1,0,0, 0,0,0,0,0,0,0,0,0,0,0,0},   //pin12
    {  0,0,0,0,0,0,0,0,0,0,1,1, 0,0,0,0,0,0,0,0,0,0,0,0},   //pin11
    {  1,1,1,1,1,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,0,0,0,0,0},   //pin10
    {  0,0,0,0,0,0,0,0,0,0,0,0, 1,1,1,1,1,1,1,1,1,1,0,0},   //pin 9
    {  0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,1,1} }; //pin 8

void setup()
{ for (byte i = 0; i < nrLeds; i++)
    pinMode(pinarr[i], OUTPUT);
}

void loop()
{   for (byte s=0; s<nrStates; s++)
    { for (byte j=0; j<nrLeds; j++)
      { digitalWrite(pinarr[j], arr[j][s]);
      }
      delay(1000);
    }
}



Dus als we de 3x wisselcontact relay truuk pakken en opnieuw de sequentie coderen krijgen we het volgende:
Code: Alles selecteren
int Relays[nrRel] = { 13,11,8};  //relay coils
int arr[nrRel][nrStates] = {
    {  0,0,0,0,0,0,0,0,0,0,0,0, 1,1,1,1,1,1,1,1,1,1,1,1},   //coil 13
    {  0,0,0,0,0,0,0,0,0,0,1,1, 0,0,0,0,0,0,0,0,0,0,0,0},   //coil 11
    {  0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,1,1} }; //coil 8


Ik denk dat het wel klopt allemaal, maar je moet het zelfs natuurlijk ff nalopen.

suc6.
Gear: Arduino- Uno,Due,Ethernet,Mega2560 , OLS LogicAnalyser, TDS1002, Rigol DG1022, J-Link EDU, BusPirate

Berichten: 1
Geregistreerd: 08 Sep 2013, 21:05

Re: Verkeerslichten voor de kids

Berichtdoor KeesC » 08 Sep 2013, 21:19

Dit hele simpele programmaatje doet het ook prima. Als je de tijden anders wilt hoef je die alleen maar bovenin aan te passen. Lijkt me wat makkelijker dan wanneer je arrays uit moet gaan breiden.
Voor de verkeersveiligheid staan de rode lichten steeds gelijk 1 seconde op rood, voor de volgende op groen gaat.

const int roodPin1 = 2;
const int geelPin1 = 3;
const int groenPin1 = 4;
const int roodPin2 = 8;
const int geelPin2 = 9;
const int groenPin2 = 10;
const int dRood = 1000; //tijd dat beide lichten op rood staan
const int dGeel = 3000; //tijd voor het gele of oranje licht
const int dGroen = 10000; //tijd voor het groene licht

int roodVal1 = 0;
int geelVal1 = 0;
int groenVal1 = 0;
int roodVal2 = 0;
int geelVal2 = 0;
int groenVal2 = 0;

void setup(){
pinMode(roodPin1, OUTPUT);
pinMode(geelPin1, OUTPUT);
pinMode(groenPin1, OUTPUT);
pinMode(roodPin2, OUTPUT);
pinMode(geelPin2, OUTPUT);
pinMode(groenPin2, OUTPUT);
}

void loop (){
digitalWrite(roodPin1,HIGH);
digitalWrite(roodPin2,HIGH);
delay(dRood);
digitalWrite(roodPin1,LOW);
digitalWrite(groenPin1,HIGH);
delay(dGroen);
digitalWrite(groenPin1,LOW);
digitalWrite(geelPin1,HIGH);
delay(dGeel);
digitalWrite(geelPin1,LOW);
digitalWrite(roodPin1,HIGH);
delay(dRood);
digitalWrite(roodPin2,LOW);
digitalWrite(groenPin2,HIGH);
delay(dGroen);
digitalWrite(groenPin2,LOW);
digitalWrite(geelPin2,HIGH);
delay(dGeel);
digitalWrite(geelPin2,LOW);
digitalWrite(roodPin2,HIGH);
}

Terug naar Gezamenlijke projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 8 gasten