Eerste robot project

Om het aanbod nog wat open te trekken: op de blog van stienoo staat ook uitgewerkt hoe je van nul een robot kan bouwen voor beginners met filmpjes enzo. Van het platform dat stienoo gebruikt bestaan ook een hele reeks Nederlandstalige tutorials waaronder en tutorial over hoe je een robot op afstand kan besturen. Dit alles is gebaseerd op een PIC 18F4550 en de programmeertaal C. Ik zou zeggen bekijk dat alleszins ook eens. Je leert op een leuke manier C waar je later ook veel aan gaat hebben.

Ik snap nu ongeveer hoe ik moet werken met picbasic en ik zou hier nu graag verder mee gaan, als ik nu weer hellemaal van nul moet beginnen gaat het nooit afkrijgen.
Wel bedankt voor het meedenken iedereen!

Ik heb gisteren een plaatje systreen aangekregen voor de voor en achter lichten en misschien voor de schuine kanten.(Ik weet niet of ik genoeg heb)
Waarschijnlijk wordt de robot rood met de bodem en zijkanten grijs, ik zal straks het ontwerp (sketchup) online zetten.
Het schema is af (ik heb het nog eens met de hand getekend) maar ik had niet genoeg tijd om het in te scannen.

Hallo,

Ik ben zelf ook bezig een basis (modulaire opbouw) te leggen voor een robot applicatie. Te programmeren in de Free Proton Basic. Met als centraal deel een PIC18F25K20 of PIC18F25K22. Maar om onnodige software zaken te regelen die niet nodig zijn, zou je ook eens naar de Sharp IS471F kunnen kijken voor je line-volger. Ze kosten wel wat, maargoed alles zit erin, en je krijgt een keurig "1" of "0" signaal.

Webshop voor Electronic Prototype | http://eProto.nl/

De IS471F kost in totaal (met weerstand en LED)€5.87.
Dus de prijs valt wel mee,
Als die nu geen IR licht ontvangt (dus op zwart komt) geeft die dan een 1 singaal?
Nu kan ik wel opnieuw beginnen met het schema te tekenen.

Hallo Ledfan,

De IS471 kost idd 3,25 bij enkele stuks. Een losse IR diode erbij TSAL6200 ofzo kost 0,25. Hij geeft inderdaad een "1" of "0" signaal. Hou ga je dit inlezen ? Als het met een microcontroller is, dan maakt het niet uit of het signaal van hoog naar laag gaat, of anders om. Zie pagina 3 van de datasheet. Of gebruik je geen micro ?

Ik weet niet hoe jij je schema opzet, maar wij verzamelen altijd eerst alle info over de te gebruiken hardware componenten e stellen specs op wat wij willen. Soms testen we eerst bepaalde onderdelen afzondelijk, alvorens een heel board en schema te bouwen waar achteraf dingen inzitten die niet functioneren. Ga je ook nog iets met Distance doen ? Bijv de Sharp GP120x of met Ping... ultrasoon. En communicatie ? IR communicatie met een TSAL6200 diode en een TSOP14838 of Zigbee ?

En al een idee over de aansturing van de motoren ?

Webshop voor Electronic Prototype | http://eProto.nl/

Communicatie ga ik waarschijnlijk niet doen.
Ik gebruik een PIC de 16f628A, wil er ook ander gebruiken maar weedt niet wat het verschil is.
Ik teken gewoon een schema zodanig dat ik later alles gemakkelijk kan testen.
Op conrad had ik de IS471F voor 5,... gezien.
Ik heb ook bij reichelt gekeken maar daar vond ik hem niet.
Ik heb vandaag wel niet erg veel tijd...

Ledfan-

Ik heb even snel op farnell gekeken voor een indicatieprijs. De datasheets kun je daar trouwens ook downloaden. De 16F628A is al een oud beestje en wordt erg veel gebruikt voor de hobby. Of dat komt door dat tie op de 16F84 lijkt, ik weet het niet. Persoonlijk zou ik kiezen voor een iets grotere (28-pins) en dan met interne osc. Je hebt dan ook meer keus om door te groeien naar een 18F25K20 (ondersteund door de free Proton Basic)of de 18F25k22.

Maar het blijft belangrijk dat je van te voren weet wat je wilt aan extra hardware.

Webshop voor Electronic Prototype | http://eProto.nl/

Ik wil er wel wat op aansluiten dus een grotere versie zou wel handig zijn.
Maar blijft het programmeren en het laden (het programmma laden in de PIC) hetzelfde?
Ik denk het wel...
Maar als particulier kan je toch niet bestellen bij farnell?

kan wel maar dan heb je het probleem dat je voor 50 euro moet gaan bestellen bestellen

Een grotere pic en meerdere 'dingen'erop aansluiten is allemaal wel leuk bedacht, maar om alles in 50 regeltjes werkend te krijgen...
Een andere mogelijkheid om meerdere dingen te laten werken, is 2 pic's gebruiken, waarop de software verdeeld kan worden (=100 regels)

Daar had ik ook aan gedacht, ga er nog wat over nadenken.

Ledfan-

Je hebt nog een heleboel zaken om over na te denken :-) Waar wil je in Programmeren? 2 losse controllers is een optie, maar alleen handig als de ene een soort slave I/O device is. Anders blijf je steeds switchen met je firmware tussen 2 micro's. Je kan ook een PIC18F25K22 nemen met daaraan een FTDI, bootloader erin de Free Proton Basic downloaden en je kunt met deze PIC® onbeperkt programmeren. De volle 32K zonder enige beperkingen! En de IDE is super, firmware tikken, op de knop drukken, Compile and Program. Gewoon via de USB van je PC/Laptop. Geen programmer nodig, niks.

Webshop voor Electronic Prototype | http://eProto.nl/

Ik ben nog wat aan het nadenken en aan het proberen een code te schrijven.
Ik ben me ook wat aan het verdiepen in PIC's, nu heb ik een nieuw vraagje kan ik mijn pic herprogrammeren?
Ik dacht van wel maar was hier niet zeker over.
Alvast bedankt!

Ledfan -

Alle PICmicro's met een F in het type nummer zijn Flash types. En deze kun je tig aantal keer Programmeren (Flashen). (oudere C versies zijn OTP)

Webshop voor Electronic Prototype | http://eProto.nl/

Ok bedankt!
Ik dacht dat ik dit ook al had gevonden.

Ik heb vandaag wat code geschreven.
Ik denk dat ik er een LCD ga in plaatsen dus daarvoor heb ik ook al wat bedacht. Ik ga subiet nog wat verder doen.

Voor de besturing

pic basic code:


'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2010 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 13-10-2010                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************

Symbol sensor1  =porta.1
Symbol sensor2  =porta.2
Symbol motor1   =porta.3
Symbol motor2   =porta.4
Symbol led1     =porta.0            ;Als er iets fout loopt moet deze led aan gaan.
Symbol led2     =porta.5            ;Als de robot aan het rijden is moet deze aan gaan.

if sensor1=1 and sensor2=1 then
     
    High Motor1
    High motor2      
Endif



if sensor1=0 And sensor 2=1 then    
    low motor1
    High motor2
endif

If sensor 1=1 and sensor 2=0 then  
    High motor2
    Low motor1      
endif

if sensor 1=1 and sensor 2=0 then
     low motor2
     low motor1
     High LED1

    

EDIT: code weggehaald omdat het fout is:ik dacht dat er op het scherm 3 regels waren.

Weet iemand of dit een beetje gaat werken?
Het is nog niet op elkaar afgestemd.
De 2de code staat dus los van de 1ste. Want op het scherm komt gewoon te staan hoe je hem moet besturen.

Als iemand nog ideeën heeft voor een naam, ik ben er naar opzoek.

[Bericht gewijzigd door LEDfan op 26 oktober 2010 10:54:04 (34%)]

Hallo Ledfan,

Gaat het een LFR (line Follow Robot) worden ?

En je schrijft in Proto Basic ?

Webshop voor Electronic Prototype | http://eProto.nl/

Begin eens bij het begin, Ledfan.

1) geef eerst eens aan, wat je aan hardware gaat gebruiken.
soort motoren
motordriver
2) bestudeer de cursus nogeens goed, ze zal dan zien dat je om te
beginnen eerst aan moet geven, wat voor pic je gebruikt.
3) kijk eens in het onderstaande stukje code, wat jij in jouw code
mist (uit picbasic.nl)

pic basic code:

DEVICE 16F628A                ;Gebruik een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE              ;Alle ingangen digitaal

SYMBOL LED1 = PORTA.0         ;Poort A.0 heeft nu de naam LED1
SYMBOL LED2 = PORTA.1         ;Poort A.1 heeft nu de naam LED2
SYMBOL LED3 = PORTA.2         ;Poort A.2 heeft nu de naam LED3
SYMBOL S1   = PORTB.0         ;Poort B.0 heeft nu de naam S1
SYMBOL S2   = PORTB.1         ;Poort B.1 heeft nu de naam S2
SYMBOL S3   = PORTB.2         ;Poort B.2 heeft nu de naam S3

PORTB_PULLUPS ON              ;On-chip pull-up weerstanden actief 
CLEAR                         ;Wis alle RAM geheugen

;Hoofdprogramma
WHILE 1 = 1                   ;Oneindige lus
  IF S1 = 0 THEN HIGH LED1    ;S1 gesloten (=laag) LED1 aan
  IF S2 = 0 THEN HIGH LED2    ;S2 gesloten (=laag) LED2 aan
  IF S3 = 0 THEN HIGH LED3    ;S3 gesloten (=laag) LED3 aan
WEND

[Bericht gewijzigd door Kareltje op 21 oktober 2010 17:25:05 (57%)]

Het wordt een LFR

Ik heb de cursus al goed bekeken en ik wist dat dat miste, was dat vergeten, dacht dat ik dat er al had tussen gezed.
Ook zie ik nu dat er iets niet klopt met ENDIF.
Ik ga de code nog even aanpassen.

EDIT: code van de besturing is aangepast krijg allen deze errors:

code:

LINE 33 variable sensor not found
LINE 37 misplaced or incorrect endif. Also check this corresponding IF.

Dit is de aangepaste code: (ik hoop dat ik niets vergeten ben)
[code=PICBasic]
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2010 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 13-10-2010 *
'* Version : 1.1 *
'* Notes : Update 17:47 *
'* : *
'****************************************************************
Device 16F628A
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
clear
;als H-brug gebruik ik een l293D
;als sensors gebruik ik 2 IS471

Symbol sensor1 =porta.1 ;we noemen porta.1 motor2, hierop is de IS471 aangesloten
Symbol sensor2 =porta.2 ;we noemen porta.2 motor2, hierop is de IS471 aangesloten
Symbol motor1 =porta.3 ;we noemen porta.3 motor2, hierop is de l293D aangesloten
Symbol motor2 =porta.4 ;we noemen porta.4 motor2, hierop is de l293D aaangesloten
Symbol led1 =porta.0 ;Als er iets fout loopt moet deze led aan gaan.
Symbol led2 =porta.5 ;Als de robot aan het rijden is moet deze aan gaan.

if sensor1=1 and sensor2=1 then ;Als sensor 1 hoog is en sensor 2 hoog is dan:
High Motor1 ;geeft een 1 singaal naar de l293d voor motor1
High motor2 ;geeft een 1 singaal naar de l293d
High led2 ;zet LED2 aab
Endif

if sensor1=0 And sensor 2=1 then ;Als sensor 1 laag is en sensor 2 hoog is dan:
low motor1 ;geeft een 0 singaal naar de l293d voor motor1
High motor2 ;geeft een 1 singaal naar de l293d voor motor2
High led2 ;zet LED2 aab
endif

If sensor 1=1 and sensor 2=0 then ;Als sensor 1 hoog is en sensor 2 laag is dan:
Low motor1 ;geeft een 1 singaal naar de l293d voor motor1
High motor2 ;geeft een 1 singaal naar de l293d voor motor2
High led2 ;zet LED2 aab
endif

End
[/code]

Ik heb ook gezien dat ik 2 keer dezelfde code heb gepost, dus maar aangepast.
Hier ook een .zip file met de code's in.

Alvast bedankt!

pic basic code:

If sensor1=1 and sensor2=0 then   ;Als sensor 1 hoog is en sensor2 laag is dan:
    Low motor1                      ;geeft een 1 singaal naar de l293d voor motor1
    High motor2                     ;geeft een 1 singaal naar de l293d voor motor2
    High led2                       ;zet LED2 aab
endif
 
'spaties verwijderd tussen sensor*1 en sensor*2

ook mis ik de while en wend lus.
Aangenomen dat de enables van die L293D aangesloten zijn op portA.3 en portA.4 lijkt het te moeten werken.
Wat die sensor betreft, weet ik zo niet uit mijn hoofd hoe die schakeld, maar dat zal jij zelf wel in de datasheet gevonden hebben.

edit: waar heb je de inputs van de L293D aangesloten, dit moet je ook opgeven in je code.

Ik ben momenteel de code aan het veranderen.
Alleen snap ik ook niet wat ze bedoelen met while 1=1 en wend.
Snap wel dat while en wend als lus werkt maar snap niet waarom daar 1=1 achter moet.

Ik snap nog iets over deze code:

pic basic code:

' www.electrobotic.oRg
[i][b]trisb=%00000111
portb=0 
[/b][/i]
while(1) 
'1
if portb.0=1 and portb.1=1 and portb.2=1 then
[B][i]portb=0[/i][/b]
portb.4=1
portb.5=1
endif

Dit is een stukje code van de site van Jaron Wolbers.
De stukjes die ik in het vet en schuin heb gezet snap ik totaal niet.
De maker hiervan geeft toch niet aan wat 1 en 0 betekent of wel?
Ik denk dat de code niet volledig is.

Alvast bedankt!

Ik ga de code e. d. laten voor later. Ik denk dat het makkelijker is als ik kan experimenteren. Maar iedereen is wel heel erg bedankt!

Nu weet ik niet echt of de motoren en wielen die ik gevonden heb goed zijn. Zullen die wel alles aankunnen?
EDIT:Ik heb in het [robotica] schow your robot gezien dat iemand de motoren en wielen van real robots heeft gebruikt. Hier heb ik ook al even aan gedacht.
Ik denk alleen dat deze niet sterk genoeg gaan zijn omdat dat (veronderstel ik) lichte robotjes zijn. In mijn robot komen MDF en plexi glas platen, en uiteindelijk waarschijnlijk veel elektronica.
Ik schat dat dit toch naar de 5-6 kilo gaat gaan.

Ik ga nu nog wat tekenen en zal straks wat laten zien.
EDIT:Ik ben nog aan het twijfelen tussen 2 ontwerpen maar zal vanavond nog wat proberen te laten zien, maar weet niet of dit gaat lukken.

Alvast bedankt!

[Bericht gewijzigd door LEDfan op 4 november 2010 08:38:34 (48%)]

Verwijderd

[Bericht gewijzigd door LEDfan op 13 november 2010 14:09:19 (98%)]

Ik ga mij eerst even verontschuldigend omdat ik de ontwerpen nog altijd niet heb gepost en weet ook niet wanneer ik dit kan/zal doen.

Maar ik heb nog een vraag is het handig en dan vooral tijdens het experimenteren om een reset knop aan de PIC te koppelen?

Ben nog wat aan het zoeken naar de motors's en wielen en volop aan het uittekenen hoe deze komen te staan maar omdat mijn bodemplaat een beetje smal is (18cm) komen de assen die uit de moto's steken tegen elkaar. Mag ik deze inkorten of is de garantie verloren of is de garantie op motors waardeloos?

Wegens plaatsgebrek wordt hij 25cm breed en ca.10cm hoog met wat schuine kanten.

Alvast bedank!