Ballen machine met Arduino in de maak

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 4
Geregistreerd: 25 Jun 2012, 14:02

Ballen machine met Arduino in de maak

Berichtdoor Blacktree » 25 Jun 2012, 20:14

Beste dames en heren, dit onderwerp maar even in overige projecten gezet aangezien het geen afgerond project is, sterker nog, ik begin net. Maar aangezien ik dit graag met jullie deel (mijn vallen en opstaan op dit voor mij nieuwe terrein) heb ik een blog gemaakt waarin ik mijn project beschrijf.

Ik ben van plan een knikkerbaan 2.0 te maken. Een machine waardoor ballen (lees: knikkers) rollen en die doormiddel van sensoren en motoren worden gestuurd en gestorteerd. Ik ben een nul op dit gebied en twee weken geleden mijn eerste Arduino Uno bordje gekocht. We zullen zien hoe het gaat en mocht ik jullie hulp nodig hebben, dan laat ik dat hier natuurlijk weten.

En de eerste vraag heb ik ook al: Ik ben opzoek naar een goede color-sensor om de 6 verschillende kleuren van de knikkers waar te kunnen nemen. Wie kan mij een goede aanraden?

Tot nu gegroet en 'laat ze rollen'.

Mijn Blog: http://arduino-ballenmachine.blogspot.com

Advertisement

Berichten: 4
Geregistreerd: 25 Jun 2012, 14:02

Re: Ballen machine met Arduino in de maak

Berichtdoor Blacktree » 02 Jul 2012, 13:51

Stap 1 om de Arduino met de ballenbaan te combineren tot een ballenmachine is gezet. En ook al is het een test, ik ben erg tevreden. Het resultaat kan je hier lezen/zien. http://arduino-ballenmachine.blogspot.com.

Gebruikers-avatar
Berichten: 188
Geregistreerd: 23 Dec 2011, 00:12

Re: Ballen machine met Arduino in de maak

Berichtdoor Duality » 02 Jul 2012, 18:19

Cool!

mooi project :)

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

Re: Ballen machine met Arduino in de maak

Berichtdoor pjh » 03 Jul 2012, 07:47

Color sensor: ik ben tijdje terug met de ADJD-S311 bezig geweest: http://www.youtube.com/watch?v=qkvlEtDAZck&feature=youtube_gdata_player. Deze werkt heel goed en snel.

Waar je ook naar zou kunnen kijken is de atachInterrupt() routine van de arduino-ide. Hiermee kun je 'continue' kijken of er ballen voorbij komen, zonder dat je een loop in de sketch nodig hebt. Laat maar weten als je niet snapt.

Gebruikers-avatar
Berichten: 13
Geregistreerd: 22 Jun 2012, 12:04

Re: Ballen machine met Arduino in de maak

Berichtdoor WallyCom » 03 Jul 2012, 12:31

Hallo Bertil,
Houd er in het vervolg van je project rekening mee dat tijdens een delay in de sketch, de arduino niets doet en alleen maar wacht.

Oh, ik zie nu pas dat pjh mij voor is geweest.
Ik had FF geen tijd om alles te lezen.

Maar vooralsnog een gaaf project.
Succes !
M.Vr.Gr.,
Harry

Berichten: 4
Geregistreerd: 25 Jun 2012, 14:02

Re: Ballen machine met Arduino in de maak

Berichtdoor Blacktree » 05 Jul 2012, 15:44

Beste mensen, wat een fijne reacties allemaal. Het project is leuk om te doen, maar nog leuker als je merkt dat er 'publiek' is.
Beste pjh, zoals je in mijn nieuwe bericht kan lezen ben ik voor het 'broertje' van de door jouw genoemde sensor gegaan. Ik begrijp inmiddels dat het verschil analoog en digitaal is (als ik het niet goed zeg dan hoor ik dat graag).

De routine die jij noemt is bij mij niet bekend, ik moet daar maar eens over gaan lezen. Ik vroeg me trouwens al af of de Arduino meerdere dingen tegelijk kan doen. Ik bedoel daarmee dat ik meerdere sensoren in de baan wil monteren en die moet hij allemaal bekijken en op reageren. Neem ik dan steeds een nieuwe loop op in de sketch of kan dat op een andere manier? Ik hoor graag van jullie (als groentje :roll: ).

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

Re: Ballen machine met Arduino in de maak

Berichtdoor pjh » 05 Jul 2012, 20:52

De arduino kan maar 1 ding tegelijk. Net als jij. Arduino heeft een masculiene betekenis (sterke vriend). Mannen zijn nu eenmaal zo. En wanneer twee ballen tegelijk langs een sensor gaan, kan de arduino dat niet zien. Maar.... De arduino leeft in een microseconde wereld, waardoor de arduino meestal toch kan zien dat één bal net iets eerder was.

Van deze snelheid van de arduino wordt handig gebruik gemaakt bij die zogenaamde interrupts. Deze liggen in de hardware van de arduino vast en bevinden zich 'achter' pinnetje 2 en 3. Dit zijn respectievelijk interrupt 0 en 1. De arduino mega heeft nog 4 extra pinnetjes met een interrupt erachter (interrupt 2, 3, 4 & 5).

Wanneer een sketch op je arduino loopt, dan kijkt de atmega-chip - geheel los van je void loop() - om de zoveel klok-tikken of er iets op pinnetje 2 of 3 gebeurd. Wanneer er iets gebeurd, bijvoorbeeld een knopje wordt ingedrukt en pin 2 gaat van 5V naar aarde, (of een balletje komt langs), dan kun je de sketch naar een aparte subroutine sturen.

Eenvoudig weergegeven:
1. zonder interrupt:

Code: Alles selecteren
void setup(){}
void Loop{
  if( bal komt langs ){
    je ding
  }


2. met interrupt:

Code: Alles selecteren
void setup(){
  attachInterrupt(0, balKomtLangs(), CHANGE );
}

void loop(){
  }

void balKomtLangs(){
  je ding
}


Zodra de waarde op pinnetje 2 ( = interrupt 0) verandert (CHANGE), wordt de void loop() onderbroken en naar routine balKomtLangs() gegaan. Zo herkent je arduino een bal en wordt "je ding" gedaan, terwijl je void loop() nog leeg is!. Lees het vooral na op http://arduino.cc/en/Reference/AttachInterrupt

Nu ligt in bovenstaande besloten dat je met een arduino uno maar twee interrupts hebt. Met een mega heb je er 6. Ik weet ook niet hoe gevoelig je sensor read-out is. Wanneer je nu bijvoorbeeld een analoog kanaal gebruikt met een lichtsensor en je ziet bij het passeren van de bal de analogRead() vann 600 naar 700 gaan, gaat de interrupt niet 1-2-3 werken.

Verder moet je je realiseren dat alle variabelen die je gebruikt in dit soort interrupts, 'volatile' moeten zijn ( zoals : volatile int a =0; ). Volatile betekend dat een extern proces als een interrupt, toegang heeft tot de variabele. Ik noem ze vogelvrij.

Maar interrupt zijn wel handig. Je kunt namelijk zelf bepalen hoe vaak een interrupt kijkt. Onderliggend mechanisme van een interrupt is natuurlijk de systeem-klok. Deze tikt met 16Mhz. 16 miljoen per seconde. Wanneer je nu per klok-tik een 1 optelt bij een getal van bijvoorbeeld 24 bits (= 16.777.215), en je zet de interrupt op het overlopen van dit getal, heb je ongeveer 1 hertz te pakken. Een 12 bits getal loopt 3.906 keer per seconde over. Stel dat je ballen 1 meter per seconde gaan dan kan een arduino de bal 1 meter / 3.906 = 0,3 mm zien opschuiven. enzovoort.

Paul

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 11 gasten