perjantai 4. maaliskuuta 2011

Aloittelijan perehtymistä elektroniikan ihmeelliseen maailmaan

Aloittelijan alkuharjoituksiin vähän taustaa: Olen koko pienen ikäni ollut kiinnostunut tekemään jotain hyödyllistä elektronista laitetta jonka toiminnallisuus olisi ihan itse määriteltyä mutta ensin ei ollut rahaa ja sitten ei ole ollut aikaa. Nyt kun jä(ttäydy)in työttömäksi voisi koittaa saada jotain kehittävää aikaan. Sähköpuoli on jonkinverran tuttu kuljetinsysteemien antureiden ja moottorikeskusten kautta käyttöönottohommista, mutta ei tuota hituvirtaa ole joutunut käyttämään. Ohjelmoitavien logiikoiden (PLC) kanssakin on useampi vuosi tullut pelailtua, mutta ei niitäkään ole tullut enää vähään aikaan räplättyä. Eikä mitään korkeamman tason ohjelmointikieltäkään ole koskaan ehtinyt opettelemaan...

Eli onhan tässä vankka pohja projektille ;)

Joten tässä sitä ollaan. Arduino Duemilanove vaikutti juuri sopivalta alkuharjoitteluvärkiltä, joten nyt se on sitten Robomaasta tilattu ja saatu ja ei muuta kuin kehitysohjelmien asennus ja lediä vilkuttelemaan !
No ei kyllä vaikuta kovin kehittävältä pitkän päälle, vaikka vähän saa vilkun taajuutta vaihdeltuakin... Pitäisi varmaan vielä keksiä sopiva projekti jossa käyttöä voisi harjoitella kunnolla eli laitetta jopa hyödyntää.

Hmm. Romulaatikossa jotain 6-24VDC Vaihdemoottoreita olisi kaksi kappaletta, pari pientä 5 VDC (vai 12?) moottoria, joku auton "sähkösyylärin" puhallinmoottori propeleineen. Lisäksi laatikoista löytyy kolvi, koekäyttöalusta, pari repullista ex-kollegan lahjoittamia vastuksia, parikymmentä lediä ja muutama satunnainen konkka, pari palaa koekytkentälevyä eikä juuri muuta. Ja onhan tuossa pari printtereistä purettua askelmoottoria, mitähän nekin lienee ? Ai niin vielä pari valovastusta(?) ja muutama infrapuna-anturi ja -ledi löytyi myös. Ja pohjalla vielä muutama 7-segmentti ledinäyttökin ja "BCD to 7-seg" lutikka, varmaan 20 vuotta vanhoja. Kai nämä kaikki vielä vörkkii, toivotaan ainakin. Mitähän näistä oikein tuli joskus meinattua, ei pysty edes itse arvaamaan  ;-)


7.3 Päätin sitten jatkaa samaan sivuun uudella päivämäärällä.Ei tartte selata...
Ja sitten eikun Ruuvipenkki.fi sivuja selailemaan, ja sieltä miljoonan linkin kautta sinne tänne katselemaan ja tutkailemaan ja pikkuhiljaa alkaa ajatus selkenemään notta rakennetaan ropotti joka ajelee eestaas ja taastaas, lisätään infrapuna-antureita auttamaan törmäilyssä tai siis välttelyssä, ja ultraäänianturi kartoittamaan ympäristöä... Pitäisköhän tuota anturia käännellä vaikka servolla jossain vaiheessa että tutkis ajolinjoja tai
jotain...?

Jos tuon projektin lopputuotoksen tähtäisi vaikka pihalle ajelemaan ja nurtsia syömään että olisi oikein hyötykäyttöäkin, ja sittenhän voisi jatkaa ohjelmoinnin hienouksia optimoimalla ajolinjoja ja välttämään jo leikattuja alueita. Nurtsiakin riittää harjoitteluun kun on liki tuhannen neliötä, muutama piharakennus sekä puita ja puskia väisteltäviksi. Jossain oli muuten aikanaan näkösällä ohjekin kuinka rajata johtimella haluttu alue, induktioon taisi perustua...pitää sekin taas yrittää etsiä netistä...


8.3
Seuraavaksi pitäisi varmaan hankkia jotain moottorien ohjaukseen sopivia lutikoita, mutta mitähän ne voisi (eli pitäisi) olla ? Ja mitähän muuta sitä sitten tarviisi että saisi kaiken liittymään samaan kasaan...

Pitää käydä myös joutessaan pihan perällä purkamassa hyljätystä ruohonleikkurista koppa ja pyörät, jos tuohon vaikka integroisi vähän uutta korkeampaa teknologiaa :-) Näinköhän leikkuri pääsisi jo tulevalla
satokaudella ulos asti... ?

Suunniteltu on aina jossain välissä myös lopputuotosta, ja pikkuhiljaa päädytty rakenteeseen jossa on sivuilla kaksi erillisohjattua vetävää pyörää varustettu 12VDC moottoreilla, moottorit kytetty H-siltaan, PWM-ohjauksella. Vetävät pyörät tietysti leikkurin originaalipyöristä, keksitään vaan jollain adapterilla kiinni moottoreiden vetoakseleihin. (Kaikki nämä käyttöön tulleet hienot termit on ennestään pääosin hämärästi tuttuja, mutta sisältö valkeni pikkuhiljaa paremmin kun pari päivää kaiveli erilaisia nettisaitteja).

Kolmantena pyöränä voisi olla vaikka joutilaana oleva vapaasti kääntyilevä kalustepyörä ? Ohjaus voisi sitten puolestaan olla toteutettu vetävien pyörien moottoreita hidastamalla, eli eri tahdeissa pulssittamalla ? Tai ohjaamalla vain toista eteen/taakse ? Kelpaa lähtökohdaksi, että näillä mennään ainakin toistaiseksi.

Joka kulman tienoille eteen ja taakse katsomaan vaikka ip-anturit, eteen myös keskelle jotta voi vaikka miettiä kummalta puolelta esteen kiertää. Tai tuohon voisi soveltaa pikänmatkan ultraäänianturia jossa tunnistusalue luokkaa 0-50 cm. Mitähän noita saisi valmiina tai osina, kaivellaan netistä...  Vai laittaisko vielä etureunaan jonkun mekaanisen viiksen varmistamaan... ?



9.3
Piti sitten alkaa moottoreitakin mittaamaan, että olisiko noilla oikeasti käyttöä tässä projektissa. DC vaihdemoottoreiden vastus vaihtelee hissuksiin pyörittäessä 15-40 ohmia eli teho siis ööö... Otetaas tosta vanha AT virtalähde joka pysyy päällä ilman kuormaakin ja mitataan paljonko moottori vie virtaa... 150 mA näkyy menevän koko ajan kun vapaana pyörii... No nouseehan tuo hetken jumissa yli 1,7 A:n, vaikkei toisioakselista kyllä käsin pysähdy...Mutta pyörän säteen momentilla ehkä jumittaa ?
Eli ei kuitenkaan taida ihan 1A lutikat riittää, 2A pitää olla :-(

Entäs puhallinmoottori...No huh-huh, 2,96A kun pyörii tyhjänä... Ai joo onhan siinä vielä originaali puhallinropeli kiinni, oli vaan leikkurikopan sisällä piilossa :-) Tulin sen tultanneeksi vanerilevyadapterin kautta leikkurin koppaan moottorin tilalle. No se ei tule jäämään jumiin eikä siinä pidetä ropeliakaan... vai pidetäänkö, tai ainakin kevennettyä versiota ? Voishan se vaikka sekotella rehuja ympäri leikkurikoppaa jos samalla terät silppuaisi paremmin ? Testataan kun aika koittaa...

No yksi opetus tuli taas lisää; jos autotallin sähkösyötössä on 30 mA:n vikavirtasuoja, niin kolmas vanha PC:n poweri samaan aikaan on jo liikaa...  Suoja laukesi ja mustui koko konttori, mutta onneksi on opittu että tallenna usein jne... Ja taskulamppukin oli luonnollisesti taskussa, että löytyi heti, nou hätä :-)


11.3.
No niin, vielähän puuttuu leikkuriterä! Sehän saa varmaan saa pyöriä koko ajan ? Tai ainakin kunnes sähköt on vähissä ja aletaan etsiä kotia ? Millähän tuonkin sitten tekisi :-(  Vai laittaisko vehkeen vaan huutamaan apua vaikka summerilla ? Ja summeri toimisi myös "varashälyttimenä" jos joku sähkölampaan nostaa maasta / kallistaa tai jotain ? Ja teräkin pitää pysäyttää kun laitetta kallistaa, ettei käy haveria... Pitäisiköhän vaikka virittää viiksiterät pyörivään kiekkoon, ettei mitään jäykkää lattaa/levyä teräksi. Voisi olla ehkä turvallisempi meidän pojankloppejakin ajatellen...

Virransyöttö sitten jollain 12V akulla, Arduinolle Duemilanovelle hiukan pienempi akku? Damn, tarviiko se muka erillisen akun? Ei kai sentään, käyttöjännitehän on speksattu 6-20 VDC, suositus 6-12 VDC ettei regulaattori kuumene liikaa. Juu ei onneksi tarvitse erillistä akkua, pudottaa Arduinolle syöttöä vähän vaikka diodeilla jos alkaa lämpenemään ? Päästösuuntaan olikohan pudotus jotain 0,7 V per kappale, hämärä mielikuva ?


12.3
No niin, nyt on tilailtu alajaisiksi erilaisia osia satunnaisita paikoista, ja odottelua varmaan jokunen viikko. Pihi mies kun on niin osia tuli Kiinasta, jenkeistä ja Saksasta tilailtua, mistä halvalla saa. Ja aina kun tilaus oli tehty ja pakattu niin tuli vielä pari juttua jotka sitten tilattiin muualta. Tuli tilattua mm 2x16 merkin lcd näyttö, kun halvalla sai. Ja sitten kosketusnäyttöpaneeli, noin tämän projektin kannalta ehkä turhimmat kikareet mainiten ;-)

Varmaan pari viikkoa menee ennekuin kaikki kamat on kotona, että jää hyvää aikaa harjoitella vaikka ohjelmointia ja miettiä rakennetta ja antureita...


14.3
Duunasin sitten etäisyysanturin irtokikaleista reikälevyn palaselle, IS471 infrapunavastaanottimesta,  940nm:n infrapunaledistä sekä tietokoneen levykeaseman lattakaapelista revitystä suikaleesta. Löysin mallikuvan
nettisaitilta, ja hyvä tuli kun vielä vähän viilasi toteutusta; punanen reunajohdin aina plussalle, viereen miikka, ja loput eli kolmas johdin signaalille. Pitäisiköhän kaikki tuon erotiikkalampaan anturit rakentaa tähän tapaan, ja Arduinon signaalipinneihin tökättävä "shieldi" jossa kolme riviä liittimiä eli kaikissa plussa, miikka ja signaali...

Yhden anturin ja ensimmäisen version shieldistä duunasin mutta sitten kirottu kolvi kylmeni ja luovutti lopullisesti. Ei kirottu värkki kestänyt kuoin 25 vuotta! Mihin voi enää luottaa, kysynpähän vaan? Eikun 30 kilsan päähän Bebekiin kysymään josko takuu kuitenkin olisi vielä voimassa... No uusi piti ostaa, lisäksi pikkuisen ohuempaa 0,6 mm juotostinaa ja jokunen pätkittävä riviliitinrima. Rimat siksi ettei tarvitse lisää langanpätkiä kytkentälevylle kolvailla Arduinon pistokkeita varten.

Ja eikun kotiin kolvaamaan seuraavaa anturia ja uutta versiota shieldistä. Ja sitten vihdoin pikkuhiljaa miettimään: jos antureiden johdoissa on urosliittimet niin eihän kytkentälevyllä voi olla uroksia kun ne ei sitten
tartu toisiinsa... Ja kerran vielä tilaamaan lisää kamaa tällä kertaa Kiinasta, nyt siis pussillinen koekytkentäjohtoja joissa molemmat päät narttuliittimillä. Voi pyssy kun ei koskaan ajattele ajoissa :-)

No koekytkentälevyllä anturijohdot toimii onneksi noinkin.


16.3.
Eikun jumppaamaan koekytkentälevy ja Arduino piikkirimoilla ja vanhoilla lerppuaseman lattakaapeleilla yhteen, ja nipparilla paketti kasaan. Netistä etsimään tietoja tuosta 7-segmenttinäytöstä: yhteisanodi, 3V jänöä, 20mA per segmentti, ok. Ja pinnien järjestyskin löytyi heti ekalla. Aika kätevää kuukkelilla etsiä datashittejä kun kirjoittaa vaan komponentissa olevan nummeron ja "datasheet" ni eka osuma on aina oikea. Jos vaikka koittaisi rakennella Ardulla lukuja tuohon.

Jatkamme harjoituksia: jumpataan Arduinon ja koekytkentäalustan 5v ja nolla yhteen... Siis enhän mä voi laittaa Ardua USB-tökkeliin jos alustalla on eri jännitelähde, kai ? No syötetään sitten Ardulta alustallepäin, sama se muutamalle lutikalle ja ledille... Tarvi ihan käydä kaivamassa esiin tekuaikainen  laskukone, jos 7-segille vähän arpoisi etuvastuksia... siis P=UI eli oho eikun tarkoitin U=RI eli R=U/I eli jänkää jäi 2V ja virtaa oli 20mA tai säästetään ja pannaan 10mA, eli R=2 / 2/1000 = 1k ? Koitetaas taas miten äijän käy. Siis tulkin mukaan ruskea-musta-oranssi (1-0-1k) ? Mitataas taas kuitenkin, eli ei. Nojuuei, kun ruskea-musta-oranssi (1-0-100) ai se onkin 100 kerroin kympille eikä tuhat ykköselle... Eikun tuossahan oli BCD to 7-seg lutikka jossa sisäiset rasistanssit noille segmenteille, pilkku vaan tarvii omansa ? joo eikun kuvan mukaan johtoja tökkimään paikasta toiseen. Hyvä kun tuli Bebekistä otettua pätkä yksjohtimista sopivan paksuista kytkentäjohtoa, saa väliaikaisesti pätkillä tökkiä kytkennät. No niin kaikki on, Arduinosta lankulle, pinneistä 2-5 jumpit BCD-7-seg tökkeliin, ja siltä edelleen 7-seg näytölle. Ja plussia ja miikkoja tarvitseville lutikoille. Yksi ip-anturi analoogipinnissä 0. Ja eikun USB tökkeli kiinni, katotaan miten äijän käy... nyt vähän
jänskättää... powerin merkkivaloledit sytty Ardussa ja lankussa niinkun pitikin, ok. Mitäs muuta sitten kun ohjelmaa harjoittelemaan... ? Häh miks toi Arduinossa oleva keltainen ledi vilkkuu ? Eikun joo,  siellähän piileskelee vielä vanha harjoitteluohjelma, joka alkoi pyörimään kun sai sähköt päälle, niin tietysti :-)

Joku harjoitusohjelma auki ja sitten mulkaamaan koodia mallin mukaan:

int IPpin = A0;    // Analogi input pinni 0 infrapuna-anturille
int BCD1 = 2;      // output pinni 2 BCD1:lle
int BCD2 = 3;      // output pinni 3 BCD2:lle
int BCD4 = 4;      // output pinni 4 BCD4:lle
int BCD8 = 5;      // output pinni 5 BCD8:lle
int IPvalue = 0;   // paikka tulevalle ip lukemalle

void setup() {
  pinMode(BCD1, OUTPUT);  // lähtöpinnit outputeiksi
  pinMode(BCD2, OUTPUT); 
  pinMode(BCD4, OUTPUT); 
  pinMode(BCD8, OUTPUT); 
}

void loop() {
  // ip-anturin lukeminen:
  IPvalue = analogRead(IPpin);   

No olihan sitä jo tossa, mutta milläs tässä jakolaskut tehdään ? Vai mitähän muuta tollakin tiedolla tekis kun muuttais BCD:ksi ja lykkisi kohti lähtöjä :-) Nii ja toimiiks toi yleensä ?


Eiku tänhän saa lähettään PC:lle dataa ! Eli luetaan analoogiarvoa, vilkutellaan lediä ja lähetetään arvo myös pc:lle: (lainattu koodia vähän jostain mallista, siitä tuo satunnainen lontoon murre seassa)


int IPpin = A0;    // input pinni infrapuna-anturille
int BCD1 = 2;      // output pinni BCD1:lle
int BCD2 = 3;      // output pinni BCD2:lle
int BCD4 = 4;      // output pinni BCD4:lle
int BCD8 = 5;      // output pinni BCD8:lle
int IPvalue = 0;   // paikka tulevalle ip lukemalle

void setup()
{
  pinMode(BCD1, OUTPUT);  // lähtöpinnit outputeiksi
  pinMode(BCD2, OUTPUT); 
  pinMode(BCD4, OUTPUT); 
  pinMode(BCD8, OUTPUT); 
    Serial.begin(9600);     // set up Serial library at 9600 bps

}
void loop()
{
  // ip-anturin lukeminen:
  IPvalue = analogRead(IPpin);   

  // turn the Pin on
  digitalWrite(BCD1, HIGH); 
  // stop the program for <sensorValue> milliseconds:
  delay(IPvalue);         
  // turn the Pin off:       
  digitalWrite(BCD1, LOW);  
  // stop the program for for <sensorValue> milliseconds:
  delay(IPvalue);                 

  Serial.println(IPvalue);  // prints value with ending line break
  delay(1000);
}

Ja ei kun softa tulille... ja Sehän toimii 8) Mutta miks arvo on 1023 koko ajan ? Eli anaalitulo siis täysillä ? Jä peitettynä 0... eli siis eihän tää Arduino mitään tulojen mA määriä mittaile, vaan jänöä tietty??? Voi räkä, meni analogianturi uusiin puihin... Jossain oli muuten jännitteenjakokytkentä jota pitäisi sitten varmaan soveltaa tähän, eli mitataas paljonko tuo ip-anturi antaakaan virtasta ulos. Se kun ei speksien mukaan tarvitse edes virranrajoitusta, osaa pidätetellä ihan issekseen! Nyppäsin anturin irti analogitulosta niin arvo alkoi heitteleen, alkoi tulo vissiin kellumaan missä sattuu? Heittää settiä: 103 752 131 463 404 737 695 225 224 750... No se siitä. Mitäs kun vetää signaalin alas 1 kohmin vastuksella... antaa reilua satasta, ja peitettynä taas nollaa...

Oikeen kun alkoi tavaamaan tuota datashittiä, niin tää on niks-naks anturi, eikä mikään analoogi :-( Mistähän mä oikein tonkin olin keksinyt... Eikä toi 7-seg näyttökään näköjään toimi vaikka kytkennätkin tutkin :-(

Päivä pulkassa kun alkoi sylettämään.


21.3.
Posti kulkee kun kusti polkee! Ameriikasta tuli ensimmäinen puketti, RobotSimple muisti tilaamallani Adafruit Motor/Stepper/Servo shieldillä ! Tämä: http://www.ladyada.net/make/mshield/index.html Tai siis kyseessä on
rakennussarja, joten pari tuntia meni kolvaillessa mutta valmista tuli. Uskaltaisikohan tökätä samoin tein tulille...  ni pakkohan se on !

Tuli muuten toinenkin puketti Ameriikasta, Junun Roboticsilta. Vähän noita ip-antureita ja ir-ledejä lisää. Tai siis samoja, oli ne sitten ir tai ip värkkejä ;-) Mutta niitä ei tänään jaksa kolvailla kun pari anturia on jo tehty niin pääsee testaileen. Tilasin myös SN754410 quad puoli h-siltoja, nehän korvaa moi L293:t tarvittaessa. Olevinaan kai vähän parempia ?

No kaivetaas netskistä kirjasto shieldille ja tallennetaan Arduinon libraries hakemistoon, shieldi selkään ja Arduino tulille... ja ei mitään ? Ai joo, powerin jumppi jäi pois, mutta kun ei ole omaa syöttöä moottoreille, pitää jumppi olla shieldin powerille. No nyt sytty ledi ja kaikki ok! Ei taas jaksa enempää kun tuli taas alettua työttömien Solikkakursseille, huomenna lisää. Tarvii muuten ilmoittautua avoimeen yliopistoonkin Java- ohjelmointi kurssille. Ei ehkä ihan Arduinoon liity, mutta Androidi kännykkään kyllä... mahdolliseen tulevaan Andruino yhdyntään...


23.3
Tänään taas huono päivä  :-(  kun ei ymmärtänyt mistään mitään. Kytkin yhden moottorin shieldiini ja laitoin malliohjelman pyörimään ja vot, hyvin kävi. Sitten kytkin isomman moottorin ja se ei enää jaksanutkaan malliohjelman pwm-tehoilla kunnolla pyöriä, joten hiukan muuttelin käytettyjä arvoja, ja lopputulos ei tietenklään ollut odotusten mukainen. No, palautin arvot takaisin ja kytkin toisenkin moottorin shieldiin eikä se tietenkään toiminut. Aloin sitten tutkimaan netistä vähän mallikoodeja ja siihenpä päivä päättyikin. Tosin löysin kyllä seikkaperäisen käyttöohjeen tuolle shieldillenikin. Mutta päivä taas loppui kesken.

Ai niin, löysin vanhoja ladattavia yksikennoisia NiMh akkujakin, aika sekalaisia kokoja ja osa näyttl tasan nolla volttia yleismittarilla. Taitaavat olla tiensä pääsä ? Entäs nuo jotka näytti jotain 0,8 V ... Tutkitaan joskus paremmalla ajalla.


24.3
No jaa, eilen 0,8 V näyttäneet akut olivat yön laturissa, ja nyt näyttää 1,38 V kaikissa neljässä 200mA:n akussa. Nyt koitetaan sitten niitä nollan tienoilla olleita 1600 ja 2500 mA:n akkuja latailla, saas nähdä. Ei ainakaan heti posashtanut kun laturiin tyrkkäsin.

Kävin muuten tänään ostamassa pari akkuporakonettakin, kympin kappale! Jos purkaisi vaikka 12 VDC moottorit uusiokäyttöön, samoin kuin akut ja 15V 400 mA laturit. Akut on kyllä aika kevyet, ei taida montaa kennoa olla vaikka iso möykky onkin. No avataan ja tsekataan sekin... 8 kpl 1,2V 1200mA Ni-Cd. Laturin sisällöstä ei ole paljoa kerrottavaa, vain diodi, pari lediä ja kome vastusta ? Ei mitään rajoitusta tai katkaisua ?
Vai mikä toi iso R1 merkitty pötö on, jonka läpi plussa akulle menee, ja siitä tuo vihreä ledikin palaa ? No porakoneen sisällä joku 12vdc moottori jota googlekaan ei tunnista, päässään joku planeettavaihteisto. Lienee
kierrosluvut tuollaisenaan ihan kohdallaan jotain ajopyöriä käyttämään?
PWM säädöillä sitten täsmennetään. Ja onhan sisällä vielä joku nopeudensäädinkin, liekö ihan vastus... ? ei nyt jaksa tutkia, tuskin sillä käyttöä kuitenkaan edes olisi. Eikun kannet kiinni kun kaikki on nähty. No joo ei taas onnistunu, miksei kukaan mitannut niitä moottoreita ???

Mutta siis kaikkea kaksi kahdella kympillä... ei paha.


No koitetaas tänään vielä vaikka noiden vanhojen vaihdemoottoreiden ajoa tuolla uudella shieldillä, jos saisi näin lauantai-illan kunniaksi molemmat vanhat moottorit toimimaan samaan aikaan. Eikun osat ja powerit kiinni, ja softia Ardulle netistä kaivelemaan:
>
> DC motors are used for all sort of robotic projects. The motor shield can
> drive up to 4 DC motors bi-directionally. That means they can be driven
> forwards and backwards. The speed can also be varied at 0.5% increments
> using the high-quality built in PWM. This means the speed is very smooth
> and won't vary!
>
>Note that the H-bridge chip is not really meant for driving loads over
> 0.6A or that peak over 1.2A so this is for small motors. Check the
> datasheet for information about the motor to verify its OK.
>
> To connect a motor, simply solder two wires to the terminals and then
> connect them to either the M1, M2, M3, or M4. Then follow these steps
> in your sketch
>
> 1. Make sure you include <AFMotor.h>
> 2. Create the AF_DCMotor object with AF_DCMotor(motor#, frequency), to
>    setup the motor H-bridge and latches. The constructor takes two
>    arguments.
>      The first is which port the motor is connected to, 1, 2, 3 or 4.
>      frequency is how fast the speed controlling signal is.
>      For motors 1 and 2 you can choose MOTOR12_64KHZ, MOTOR12_8KHZ,
>      MOTOR12_2KHZ, or MOTOR12_1KHZ. A high speed like 64KHz wont be
>      audible but a low speed like 1KHz will use less power.
>      Motors 3 & 4 are only possible to run at 1KHz and will ignore any
>      setting given
> 3. Then you can set the speed of the motor using setSpeed(speed) where
>    the speed ranges from 0 (stopped) to 255 (full speed). You can set
>    the speed whenever you want.
> 4. To run the motor, call run(direction) where direction is FORWARD,
>    BACKWARD or RELEASE. Of course, the Arduino doesn't actually know
>    if the motor is 'forward' or 'backward', so if you want to change
>    which way it thinks is forward, simply swap the two wires from the
>    motor to the shield.
>
>
Hmm, joo, tuohan oli siis vissiin lontoota... No problemos eli 2 moottorille:

#include <AFMotor.h>

 AF_DCMotor moto2(2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm
 AF_DCMotor moto4(4, MOTOR34_1KHZ); // create motor #4, 1 kHz pwm, ei muita 

 void setup() {
   Serial.begin(9600);           // set up Serial library at 9600 bps
   Serial.println("Motor test!");
 
   moto2.setSpeed(200);     // set the speed to 200/255 eli n. ~80%
 }

 void loop() {
   Serial.print("tick");
  moto2.run(FORWARD);      // turn it on going forward
   delay(1000);

   Serial.print("tock");
   moto2.run(BACKWARD);     // the other way
   delay(1000);
 
   Serial.print("tack");
   moto2.run(RELEASE);      // stopped
   delay(1000);
 }

Hmm. Tää oli siis koodia... okei yhdelle moottorille, vähän pyörittelyä. Sitten lisätään samat jutut moto4.run(x) ja molemmat pyörii. Huomenna lisätään vipukykimet jotka saa motot pyörimään ja peruuttamaan kytkimen asennon mukaan. Ja sitten otetaan vähän antureita mukaan. Niin ja tietysti akkusyöttö moottoreille ja Ardulle etc pitää duunata... ja sitten rakennetaan kaikki koppaan kiinni ja viedään pihalle. Koska silloin kun kaikki vihdoin toimii on tod. näk. jo kesä pitkällä !
Kyl se siit!

25.3.
OK, siis kahdella moottorilla oheisohjauksien tahtiin ? No milläs saisi ensin anturit kiinni pelilautaan... Tarvinnee shieldistä irroittaa tuo analoogiosaston riviliitinrima, niin saapi tökätä liitosjohdon piikit shieldin läpi suoraan Ardun liittimiin, ja toinen pää koekytkentälevyyn. Eli ei tarvita naarasliittimiä johtimiin nytkään, kun ei ole vielä tulleet. Ja sitten ir-anturit signaaleihin ja antureiden plussat ja miikat Ardusta. OK, näin on hyvä.

Tosta vaan vähän pohtimaan mitä kaikkea vielä tarvitaan että saadaan moottorit käynnistymään ja stoppaamaan nätisti, peruuttelemaan määrämatkan, kääntämään värkkiä sopivasti yms ylimääräistä liikettä :-)

#include <AFMotor.h>
int AntV = A5; // Ir -anturi vasemmalla laidalla A0:ssa
int AntO = A0; // Ir -anturi oikealla laidalla A5:ssä
int VapV = 0; // muuttuja signaalille
int VapO = 0; // muuttuja signaalille
int VasE = 0; // Vasen moottori käynnistetty eteen
int OikE = 0; // Oikea moottori käynnistetty eteen

AF_DCMotor MotV(2, MOTOR12_1KHZ); // create motor #2, VASEN
AF_DCMotor MotO(4, MOTOR34_1KHZ); // create motor #4, OIKEA 

void setup()
{
  pinMode(AntV, INPUT);  // Analoogitulo 0 inputiksi
  pinMode(AntO, INPUT);  // Analoogitulo 5 inputiksi

  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Ajotesti alkaa!");
 
  MotV.setSpeed(200);     // set the speed to 200/255
  MotO.setSpeed(200);     // set the speed to 200/255
}

void loop()
{

VapV = digitalRead(AntV);    // anturin lukeminen muuttujaan:
VapO = digitalRead(AntO);    // anturin lukeminen muuttujaan:

if ((VapV == HIGH) && (VasE == 0))
{
   Serial.print("vas eteen, ");
   MotV.run(FORWARD);      // turn it on going forward
   VasE = 1;
}
if ((VapV == LOW) && (VasE == 1))
{
   Serial.print("vas seis, ");
   MotV.run(RELEASE);      // turn it on going forward
   VasE = 0;
}

if ((VapO == HIGH) && (OikE == 0))
{
  Serial.print("oik eteen, ");
  MotO.run(FORWARD);      // turn it on going forward
  OikE = 1;
}
if ((VapO == LOW) && (OikE == 1))
{  Serial.print("oik seis, ");
   MotO.run(RELEASE);      // turn it on going forward
  OikE = 0;
}
}

Moottori ajaa eteen kunnes tulee este. Kun este poistuu moottori jatkaa.Sama toiminto molemmille moottoreille vasta saatu... Öitä taas

26.3
Juu ei jaksa saada tänäänkään kunnolla toimimaan softaa, vaikka pari tuntia harjoitteli tässä illansuussa. Esteeseen seisahtuu ja alkaa pakittamaan,muttei ala kaartamaan kun aika tulisi. Eikun funtsiin softaa siltäosin uusiksi...

Ei ole kyllä vielä LiPo akkukaan tullut DX-kaupasta, eikä sillä kiirettä. Luntakin vielä puoli metriä ;-)


27.3
Tänään meni netin selailuksi koko rakennustuokio, eikä silti löytynyt yhtään hyvää "buried fence" tai "invincible fence" tai "perimeter wire" tai jotain sellaista ohjetta. No koitetaan vielä lisäinnolla joskus...


28.3
No niin. Päätin sitten käyttää noita vanhoja Bebekistä hankittuja 24 VDC (?) vaihdemoottoreita, ja sorvautin tutulla sorvarilla pari akselitappia joilla saa nuo vanhat hyljätyn ruohonleikkurin pyörät kiinni vaihteiden toisioakseleihin. Ihan hyvä tuli vaikka itse sanonkin. Tarvitsee joskus pultata kaikki kiinni vanhaan ruohonleikkurin koppaan, mutta ei vielä kun ei sillä mahdu ajelemaan koeajoa täällä romulla täytetyssä autotallissa, missä verstaani on.

Uusimman suunitelman mukaan powerit leikkurille syötetään toisesta noista jus'ostetuista porakoneakuista, ja toinen saa olla aina silloin latauksessa. Eli koska en tarvitse kuin yhden laturin, toisesta laturista poistetaan sisukset ja korvataan piuhoilla suoraan kosketusliuskoihin kolvattuina, eli siitä tulee akkuteline erotiikkalampaaseen.

Vähän taas myös ohjelmaa veivasin, ja lisäksi koeajoin jotain vanhaa Tandon merkkistä stepperiä joka oli laatikoissani. Netissä katselin myös jotain askelmoottorilla tehtyä "vapaan suunnan etsijää" joka pyöräytti ultraäänianturia 180 astetta edestakaisin, ja robotti valitsi suunnan jossa oli pisimmälle vapaata tilaa. Tai sitten lähimmän suunnan missä ei ollut estettä näkyvissä... Tarvitsee varmaan miettiä muutakin ohjausta tuolle leikkurille kuin pari törmäysanturia, tosin kyllä niilläkin yhden kesän leikkailee.

30.3.
No niin, taas on reilut pari päivää vierähtänyt ja alkaa värkin toiminnassa olla jo vähän järjen häivääkin ! Siitä innostuneena ruuvasin moottorit vanerinpalaan kiinni, muut rojut mukaan ja autotallin lattialle ajelemaan !!!

Voi sitä ilon määrää kun lammas lähti esteeltä peruuttamaan, mutta vauhti oli kova ja peruutusmatka pitkä joten törmäsi takaseinään ennekuin katsoi estettä tarpeeksi väistäneensä, ja sen jälkeen pyörähti koko kierroksen itsensä ympäri, ja jatkoi seinää vasten... Tarttee vissiin vähän säätää aikoja ja ajonopeutta :-)
Eikun uusi testi joka jäi jälkipolville juutuupiinkin: http://www.youtube.com/watch?v=4Vou9qk9DEM
Nyt on vuorostaan liian pienet kääntökulmat, mutta kyllä se siitä asettuu kun lisää säätää.

Ensimmäiset koeajot on siis ajettu; ensin väisteli suht sujuvasti esteitä, mutta lopuksi aina jumissa samassa paikassa, joka tuossa videossakin oli. Tarvinnee muuttaa väistelyohjelmää, ettei käännä aina poispäin esteestä jos vastassa on toinen este ? Tai edes eriajat käännöille ? On vähän kevytkeulainenkin kun akku ei mahtunut kunnolla kyytiin, mutta onhan se mukana tuossakin :-)

Ai niin, tuo akkuporakoneen moottori ei kyllä oikein sovellu tähän käyttöön, kun ottaa jo reilut pari amppeeria tyhjäkäynnillä..

 Seuraava kuukausi tulee sitten omalle sivulle, ei kyllä ehkä ihan samaan tahtiin ?

Ei kommentteja:

Lähetä kommentti