Hallo,

Ik ben met 2 andere een profielwerkstuk begonnen en we hebben het volgende gekozen: We moeten een robot ontwerpen die automatisch door een kamer rondbeweegt.

We hebben bedacht wat de robot ongeveer moet gaan uitvoeren:
- De robot rijdt vooruit
- Wanneer de robot tegen een muur/obstakel aan botst, wordt een bumperknop(sensor) ingedrukt
- Wanneer de bumperknop is ingedrukt rijdt de robot enkele seconden achteruit
- Hierna draait de robot ongeveer 75 graden naar rechts/links (niet 90 of 45 graden, dan kan deze vast komen te zitten)
- De robot rijdt weer vooruit en het schema herhaalt zich

Nu hadden we met het vak natuurkunde met systeemboorden gewerkt en dit vonden we erg makkelijk. Toen dachten we dat we dit konden toepassen in ons profielwerkstuk. Dus wat ik toen heb gedaan is bovenstaand schema proberen te verwerken in Systematic. Dit was het resultaat:
http://i52.tinypic.com/35idfg8.png
Het werkt prima. Nu kwamen we wel tot de volgende ontdekking. We dachten dat we gemakkelijk alle poorten/invertors/pulsentellers los konden kopen, met elkaar verbinden en klaar, zodat het enkele probleem nog was hoe de wielaandrijving moest gaan werken en het draaien. Maar toen las ik dat je echt moet gaan leren hoe elektronica werkt en alles moet gaan berekenen met formules etc... Waar ik dus niet op hoopte. Het is dus niet mogelijk om alle onderdelen los te kopen en simpel aan te sluiten met draden.

Ik was begonnen deze elektronica-cursus helemaal te gaan leren: http://www.hobby-electronics.info/nl/course/html/index.html
Ik snapte alles op het begin nog wel door mijn natuurkunde-basis, tot ik bij de condensatoren kwam. Alle formules werden me veel te ingewikkeld.

Nu is dus de vraag:
Is het noodzakelijk om hierbovenstaande cursus te leren om de volgende stap te zetten? En verder, is het haalbaar om het te leren en het gehele project af te krijgen op 22 januari (deadline)? Zijn er ook andere simpelere manieren (maar wel uitdagend genoeg) om dit project te doen?

Ik hoop dat jullie me uit de brand kunnen helpen!

- Frank

Frank: je slaat eigenlijk de spijker op z'n kop: die systeemborden zijn leuk om snel iets te bouwen, maar naar mijn mening is er veel te weinig directe informatie richting leerling wat er dan binnenin zo'n ding zit.

Laten we bij het begin beginnen:
Je zal inderdaad enige kennis op moeten doen: als je dit geheel microcontroller-loos op wil lossen, heb je hier en daar enige vertragingsschakelingen nodig, die bepaalde acties van de motor van de robot besturen.

Wat je het beste kan doen: vergeet allereerst het systematic schema: dat is alleen leuk voor zo'n systeembord (daarnaast vind ik het een behoorlijke spaghetti: hebben jullie nooit geleerd zulke schema's netjes te ordenen/onderdelen logisch te plaatsen?)
Een ander mankement van dat schema is de uitgang: je hebt 3 verschillende signalen, maar je bent eigenlijk vergeten om er een blok te tekenen dat dat verwerkt voor bruikbare spanningen voor de motor (maar ik kan me voorstellen dat dat niet in het softwarepakket aanwezig is)

Als je dit in 4 maanden wil redden is het denk ik het slimste om dit per blokje aan te pakken:
Begin bijvoorbeeld eens met de bumperschakelaaar: als je, samen met de nodige onderdelen iets kan maken dat geen signaal geeft, en bij het indrukken van de schakelaar er 2 seconden een signaal gegeven wordt, waarna de uitgang weer laag wordt (of hoog, afhankelijk van wat handig is) heb je in ieder geval een basis.

Probeer dan eens de motor te besturen: als je de motor door je eerder gemaakte schakeling van draairichting kan laten veranderen, ben je al een heel eind: de rest wordt dan vooral een kwestie van afregelen en bijbouwen.

Ik zit niet bij jouw op school dus hoe en wat precies kan je toch beste aan je leraar vragen.

Voor wat je nu bedacht heb heb je toch ook een berekening of gedachte gang die telt denk ik ook.

Voor om de motoren aan te sturen daar begint dan de echte uitdaging daar moet je wel dingen op elkaar gaan afstemmen en dus berekenen. Je moet dan bv weten af je elektronica wel de stroom aan kan die de motor vraagt ook wanneer de robot tegen de muur staat en dor probeert te gaan.

Hallo Frank,

Volgens mij is het wel mogelijk om verschillende IC's los aan te kopen (aan een goede prijs).

Maar deze manier van werken lijkt mij wat ouderwets? Het lijkt mij makkelijker om een PIC te gebruiken, dit houdt wel in dat je een PIC-programmer moet hebben. Deze kan je in kit formaat aankopen bij bijvoorbeeld Velleman.

Al heb ik de indruk dat je pas gestart bent met elektronica, om die redenen zou ik opteren voor een simpele Arduino. Dit is makkelijker te programmeren dan C en je hebt een hardware bordje kant en klaar (die je naar mijn mening moeilijk kan namaken en zulke prijzen).

Op de vraag of je de online cursus moeten blijven volgen zou ik vooral diodes, transistoren, koelplaten, FET's en operationele versterkers lezen. De rest is ook goed om te weten maar alles op eigen basis doen lijkt me zwaar.

Hopelijk heb je wat aan mijn informatie!
Groetjes

Ik zou juist de PIC's en zo vermijden, en eerst ervaring opdoen met conventionele electronica.

Zeker omdat je in dat geval veel makkelijker in blokken kan werken: dat gaat in software lang niet zo makkelijk.

De dingen op een systeembord zijn goed zelf te maken. Voor een pulsgenerator gebruik je een 555 circuit (zie o.a. http://www.kpsec.freeuk.com/555timer.htm). Een geheugencel is een set-reset latch, die vind je in de 4043 of 4044. Voor de teller heb je heel veel opties, onder andere de 4017. Een inverter is de 4069 en een EN-poort is de 4081.
Zie http://www.kpsec.freeuk.com/components/cmos.htm en wikipedia over 4000 en 7400 series IC's.

Lees de datasheets van die IC's, daar staat alle informatie in over hoe ze werken.

Er zijn wel wat dingen om rekening mee te houden:
- in het systeembord wordt de ground niet zichtbaar gemaakt. In real-life moet je daar wel rekening mee houden.
- ingangen van de chips die je niet gebruikt moet je of aan de ground (de min) of aan de voeding (de plus) vastmaken, anders gaat de chip raar doen.
- standaard 4000 en 7400 chips kunnen niet genoeg stroom leveren om een motor aan te zetten. Je moet dan een H-brug maken met transitoren om een motor aan te sturen.

Hoe kom je aan deze chips: misschien kan je school bij RS-components of Farnell bestellen, die hebben bijna alles, anders is Dick Best een goede optie of in het laatste geval Conrad.

Allereerst wil ik even zeggen dat ik blij ben dat we hier toch weer een TS (topic-starter) hebben die zelf zijn huiswerk al heeft gedaan, en vooral nog ruim op tijd hulp zoekt! Je wilt niet weten hoeveel topics hier al zijn met de strekking "en rap een beetje, want het moet overmorgen ingeleverd worden".

@TS: kun je wat meer details over de motoren geven? Typenummer, spanning, maximale stroom, etc. Als ze niet al te groot zijn, kun je die met een paar IC's (L6203, L298 o.i.d.) wel aansturen.

Zoals gezegd, de combinatorische functies (AND, OR, XOR, NOT) en flipflops kun je gewoon inkopen, en je kunt alles zelf maken als je genoeg NAND poorten hebt. Een NAND poort waarvan je beide ingangen aan hetzelfde signaal knoopt, is een NOT poort (inverter) geworden. Een SR flipflop bestaat uit 2 NAND poorten.

Voor vertragingen kun je waarschijnlijk het beste NE555 IC's gebruiken, in one-shot (oftewel monostabiele) configuratie. Die berekeningen zijn niet echt moeilijk, en er zijn genoeg rekenhulpjes te vinden. Zo'n NE555 telt niet digitaal, zoals je het nu getekend hebt, maar werkt analoog, met een stijgende of dalende spanning over een condensator.

Nee, je hebt die formules van die cursus niet direct nodig. Niet allemaal iig.

Je schema kan ook simpeler. Als je een NE555 als monoshot gebruikt, heb je je timer met 1 ICtje ipv met een pulsgever, een teller, en een stel and poorten. Pak de datasheet van de NE555 erbij, schema staat er in (incl formule om de tijd uit te rekenen). De uitgang wordt hoog als de ingang eventjes beneden een bepaalde spanning komt. NE555 datasheet. Zie blz 9 en figuur 10 en 11 van blz 10.

Je hebt ook kant en klare H bruggen (Om de motor aan te sturen). Dus dat is ook overkomelijk. (L293 of L298 bijvoorbeeld)

Maar je hebt niet zo veel aan uitgangen als "vooruit", achteruit en draaien. Zo'n H brug wil dingen als 10 voor vooruit, 01 voor achteruit, en 00 voor stilstaan. (2 verschillende ingangen, de ene is hoog, de ander is laag) Dat heb je dan op 2 motoren, door de een stil te laten staan (of achteruit te laten gaan) en de ander vooruit te laten gaan kun je draaien.

Dus je zou dan je vooruit moeten vertalen naar 1010, je achteruit naar 0101, en je draaien naar 1001.

Je hebt 2 van die monoshots nodig:
Normale situatie als geen van die monoshots getriggerd is: rechtdoor rijden.
Bumpersensor activeert de 1e monoshot. Daarbij moet je achteruit rijden.
1e monoshot triggert 2e monoshoot (nadat z'n tijd is afgelopen, dus als 'ie klaar is met achteruitrijden). Zolang die monoshot actief is moet je draaien. Als die klaar is gaat de robot weer rechtdoor.

Je moet dan dus een signaal als 00 (beide monoshots niet actief) vertalen naar "vooruit", 10 (1e monoshot actief) naar achteruit, en 01 (2e monoshot actief) naar "draaien".

IN UIT
00 1010 (Geen monoshots getriggerd -> rechtdoor)
10 0101 (1e monoshot getriggerd -> achteruit)
01 1001 (2e monoshot getriggerd -> draaien)

Daar kun je wat logica tussen knopen (And, not, or), zodat je inderdaad 0101 op de 4 uitgangen krijgt (gaan naar ingangen van de H brug), als er 10 op de 2 ingangen staat (dat komt van de uitgangen van de monoflops).

(Je kan bijvoorbeeld voor elk van de ingangssignalen een and poort gebruiken, voor de eerste allbij de ingangen geinverteerd, voor de andere 2 1 ingang geinverteerd, zodat je het volgende krijgt:

IN actie:
100 -> rechtdoor.
010 -> achteruit.
001 -> draaien.

Dat is een "one hot" codering, omdat er telkens maar 1 bitje hoog is. Dat is dus wat je nu ook hebt. Je hebt er dus wel veel aan, maar niet direct voor je motordriver. Wel kun je daarvandaan gemakkelijk je uitgang voor je motordriver maken met OR poorten. Elk bit van je uitgang is de uitgang van een or poort. Zo kun je alle kanten op.

En misschien kan het nog wel handiger.

EDIT: sparky typt sneller, maar hij had ook minder tekst :).

@TS
Zo ingewikkeld zijn die formules niet.
Je hoeft ze nog niet te begrijpen om ze te kunnen gebruiken.

TS: om het een beetje samen te vatten: nee, je hoeft niet al die formules te kennen en expert te zijn in electronica doorekenen. volgens mij komen jullie wat rekenen betreft al een heel eind als je de wet van ohm kent.
wat je wel nodig gaat hebben in dit project is praktijkervaring. want die 'blokken' van het systeembord zijn in zekere zin ook wel los verkijgbaar, maar dan heten ze logische IC's. wat ze in een systeembord doen is dat ze al die IC's die vanbinnen zitten (als je er eentje openmaakt kan je ze zien, de zwarte blokjes) al van voedingsspanning, en nog wat klein extern grut voorzien zodat de gebruiker alleen nog maar de signalen hoeft te verbinden. als je zelf met IC's gaat werken zal je dat dus zelf moeten doen. dit is wat lastiger, maar op zich nog wel te doen: ieder IC heeft een handleiding, een datasheet. hier staat precies in beschreven hoe het IC aangesloten moet worden en welke externe zaken (zoals voeding) hij nodig heeft. dus hier kom je nog wel uit. wat volgens mij het lastigst is, is bepalen welke IC's je nodig hebt. bijv. je geheugencel uit je tekening. of een delay-timertje. maar daar zijn wij voor: als jij je afvraagt welk IC je nodig hebt voor je geheugencel, kan je dat hier vragen en dan zullen wij bijv. de 4043 aanbevelen.

Op 19 september 2011 00:17:34 schreef weardguy:
Ik zou juist de PIC's en zo vermijden, en eerst ervaring opdoen met conventionele electronica.

Zeker omdat je in dat geval veel makkelijker in blokken kan werken: dat gaat in software lang niet zo makkelijk.

Kan je dat even uitleggen?
In een electronisch schema heb je functionele blokken, dat kun je in software ook realiseren. Sterker nog, software is in de regel makkelijker aan te passen dan een al gerealiseerde schakeling.

Take an Arduino, en je komt al een heel eind ;-)
http://arduino.cc/

Met een beetje spelen in crocodile clips / crocodile physics ook, daar zit die 555 gewoon in en logica ook.

Ja hoor, laten we er gelijk maar weer een computer tegenaan gooien. Microcontrollers, CPLD's en FPGA's moeten blijkbaar de wereld gaan redden, want analoge en discrete logica bestaat blijkbaar niet meer.

Wat is er nu eenvoudiger; een paar 555jes aan elkaar knopen, of een microcontroller, met programmer, ontwikkelomgeving, leren programmeren, testen, debuggen, en uiteindelijk alsnog moeten interfacen met de H-bruggen voor de motoren.

Toegegeven, met een microcontroller heb je wat meer controle en meer mogelijkheden, kun je de snelheid van de motoren regelen, etc., maar het lijkt me helemaal geen slecht idee als mensen eerst dat stukje leren (inclusief booleaanse algebra, karnaugh diagrammen, race conditions, diverse hazards, etc), en dan pas met microcontrollers gaan spelen. Eerst lopen, dan rennen.

@TS: Ik zou 2 sensoren gebruiken, een linksvoor en een rechtsvoor, zodat je altijd bij het object vandaan kan rijden.

Op 19 september 2011 18:20:06 schreef SparkyGSX:
(inclusief booleaanse algebra, karnaugh diagrammen, race conditions, diverse hazards, etc)

Alleen is geen van die dingen op booleaanse logica na van toepassing op een microcontroller die zonder interrupts en dergelijke wordt gebruikt.

Wat is bedoel, is dat mensen een beetje snappen hoe digitale logica werkt, door hebben dat digitaal soms toch stiekem analoog kan zijn, en dat er meer (en vaak betere) mogelijkheden zijn om een gegeven probleem op te lossen dan er gewoon weer een computer tegenaan te gooien.

Je kan natuurlijk ook een 555 zelf maken ;) ...

Het voordeel wat je hebt met het gebruiken van een PIC is dat je ook wat ervaring opdoet in programmeertalen. Wat ook handig kan zijn in een eventueel volgend project!

En met de NE555 kan je wel de snelheid van de motortjes regelen volgens mij, want er zit blijkbaar een PWM functie op. pagina 13

Enfin, ik zou het proberen te maken op de manier wat mij het meest aanspreekt. Op die manier blijft het ook interessant :)!

Groetjes

Op 19 september 2011 15:00:27 schreef hadv:
Kan je dat even uitleggen?
In een electronisch schema heb je functionele blokken, dat kun je in software ook realiseren. Sterker nog, software is in de regel makkelijker aan te passen dan een al gerealiseerde schakeling.

Ja, maar heb je hetzelfde overzicht als met losse printjes of onderdelen wat later je robot moet worden?

Met software zie ik het zo voor me: hij begint met de sensor die de robot dingen laat ontwijken, vervolgens moet er meer dingen bij, en moet hij dus ook in de al geschreven software gaan schrijven om het te combineren.

Op 19 september 2011 18:20:06 schreef SparkyGSX:
Ja hoor, laten we er gelijk maar weer een computer tegenaan gooien. Microcontrollers, CPLD's en FPGA's moeten blijkbaar de wereld gaan redden, want analoge en discrete logica bestaat blijkbaar niet meer.

Mijn idee...

Dit is echt niet zo bijster complex dat je er een uC voor nodig hebt. Ik denk eigenlijk dat je er nog meer bewondering mee oogst dan met een uC: iets samenstellen met logische bouwstenen vind ik persoonlijk een betere prestatie dan een uC.

Je hebt dan namelijk geleerd dat vele kleine zaken 1 geheel worden, weet exact welk onderdeel een bepaalde functie voor z'n rekening neemt, en nog leuker: de meeste leraren snappen logische poorten ook nog wel: de meeste programmeertalen zegt ze niets (maar goed, daar kan ik ze geen ongelijk in geven)