Robottiyhdistyksen pääsivuille

Suomen Robottiyhdistyksen viidestoista Robottikonferenssi Kangasalla 1-2.10.2006





Kolmiulotteinen prisma antaa tarkkaa paikannustietoa 3D kartoitusmittauksiin.
Prismassa on aktiivinen, näkymätön signaali, jota 3D mittalaite seuraa moottoriensa avulla. Painamalla radio-ohjattua tallennusnappia, laite tekee mittauspisteen muistiin tai piirtää suoraan CAD ohjelmaan (Microstation tai Autocad)  CAD-kuvaan. Esimerkiksi 600 mm paksun 3D koivun oikealle paikalleen karttaan käsin koskematta. Tästä on suunnaton hyöty, koska kuvaa voi tarkastella saman tien tietokoneen ruudulla ja voit lisätä  puuttuvat  pisteet  heti.

Miten prisma liittyy robottitekniikkaan?


Robottitutkinnon yksi tehtävä oli suunnitella tämä IR-lähetin.

1. Tehtävä:
Suunnittele IR -valolähetin prismaan.
Mitä komponentteja käytät?
Mitä toimintoja laite tarvitsee?
Tulosta suunnitelmasi kuva.
IR valon tarkkuus pitää olla ainakin 1 us toleranssilla oikea, muuten mittalaite ei tunnista sitä.

Vastaus: 


2. tehtävä: suunnittele IR -valolähettimen yksityiskohtainen kytkinkuva ja tulosta siitä kuva tiedostoon. Voit käyttää mitä tahansa ohjelmaa jota osaat käyttää. Näytä käytettyjen komponenttien tyypit. 

Vastaus: 


3. tehtävä: suunnittele IR -valolähettimen piirilevyn layout. Tulosta siitä kuva tiedostoon. 

Vastaus: Komponenttien asennuskuva

Pieni piirilevy päältäpäin Bottom layer

Osaluettelo

Bill of Material for d:\sch\2006\robo\tehtava\irtx.PCB
On 1-Nov-2006  at 23:26:39

 Comment             Pattern   Quantity  Components
------------------------------------------------------------------------------


 0.1uF               1206           1    C3

 12F675              DIP8           1    IC1

 1k                  1206           1    R3

 20MHz               CRYSTAL        1    Y1

 22pF                1206           2    C1, C2

 47R                 1206           1    R1

 4k7                 1206           1    R2

 6V                  SIP2           1    B1

 BC547               SOT23T         1    Q1

 BC557               SOT23T         1    Q3

 LD206               LED            1    IRLED

 START               SIP2           1    S1

 red                 LED            1    BEAT

---------------------------------------------------------------------------
NC Drill File Report For :  d:\sch\2006\robo\tehtava\irtx.PCB   1-Nov-2006   23:29:07
---------------------------------------------------------------------------



Layer Pair : Top - Bottom
ASCII File : d:\sch\2006\robo\tehtava\irtx.TXT
EIA File   : d:\sch\2006\robo\tehtava\irtx.DRL

Tool         Hole Size          Hole Count        Tool Travel
---------------------------------------------------------------------------
T1        0.8128mm (32mil)         8         40.509 mm (1.595 Inch)
T2        0.9906mm (39mil)         10        68.300 mm (2.689 Inch)
T3        3.2004mm (126mil)        2         57.633 mm (2.269 Inch)
---------------------------------------------------------------------------
Totals                             20        166.442 mm (6.553 Inch)

Total Processing Time : 00:00:00

Alla Poraustiedosto

M72
M48
T1F00S00C0.813
T2F00S00C0.991
T3F00S00C3.200
%
T01
X0015272Y0008846
X0015272Y0011386
X0015272Y0013926
Y0016466
X0022892Y0016466
Y0013926
Y0011386
Y0008846
T02
X0010779Y0008303
Y0013383
X0012065Y0022225
Y0024765
X0016Y0025
Y002246
X0027974Y0017193
Y0014653
X0023447Y0001939
X0020907
T03
X0004Y0024
X0029Y0002
M30

================================

Alla Gerber tiedosto

 

4. tehtävä: suunnittele IR -valolähettimen ohjelma. Älä vielä tee sitä. Olet mitannut IR -signaalin pullsitaajuudeksi 128us.

Vastaus 

1. Varsinainen IR -lähetin anto. Tämä voidaan joissakin prosessoreissa toteuttaa PWM: llä. Jos se ei toimi tarkasti, niin sitten tavallisella keskeytyksellä. PWM ei vie yhtään ohjelmaresursseja kun se on käynnistetty.

Päällekkäiset keskeytykset saattavat vaikuttaa toistensa aikoihin. Tarkkuus vaatii ulkoista kidettä. PIC12F675:lla on sisäinen 4MHz oskillaattori, mutta sen lämpötilariippuvuus ja nopeus ei riitä. 


2.  Merkkiledi vilkkuu 50ms sekunnissa, jotta käyttäjä tietää laiteen olevan päällä. Tämän tarkkuudella ei ole väliä.
3. Puolen tunnin ajastin sammuttaa prosessorin. Tarkkuus : ei väliä.

 5. tehtävä: Tee ohjelma ja testaa se simulaattorilla. Kerro millä tarkkuudella pystyt säätämään IR -taajuutta. Se ei saa koskaan muuttua yhtään. Mittalaite kadottaa muuten sen ja alkaa harhailla. 

Vastaus



/*------------------------------------------------------
                   _______  ______________
                   |       \/             |
      Vdd --+  1 <<                       >> 8 +-- Vss  
                   |                      |
 >GP5/OSC1  -+ 2 <<                       >> 7 +-- GP0(R) IRLED
                   |                      |
  GP4/OSC2/AD3 3 <<                       >>6 +-- GP1(R)  BEAT LED
                   |                      |
GPU3 /!MCLR -+ 4  <<                      >>5 +-- GP2/ NC POWER down
                   |                      |
                   +----------------------+
 -------------------------------------------------------------*/
// Prisma IR-LED in seuranta ohjelma
// File :IR_TX1.c
// Name P.Ritamaki
// date: 1.10.2006
//  ROM=14%      RAM=31%
// "C:\Program files\Picc\CCSC.exe" "IR_TX1.c" +FM +DF +LN +T -A +M +Z //     +Y=9 +EA
#include <12F675.h>

#FUSES NOWDT                //Ei Watch Dog Timer käytössä
#FUSES HS                   // High speed Xtal
#FUSES NOMCLR               //MCLR  No Reset pin, use as IO
#FUSES NOPROTECT            // No protection for code

#use delay(clock=20000000)   // 20MHz crystal
#use fast_io (A)             // No not waste time for tris
#byte GPIO = 5               // GPIO port= addres #5
#bit IRANTO =GPIO.0          // varsinainen IR lähetintransistorin ohjaus
#bit REDLED =GPIO.1          // Merkkiled
#bit POWER = GPIO.2          // prosesosorin sammutusbitti
// varaa muuttujat
#define TIMEOUT 3600          //sammutus  automaattiseti 3600 sek 
int16 sec;                   // 3600 sekunnin tuntilaskuri

/*===============================
 pulssiväli on 128us us 20MHz kiteellä, 1 ja 0 tilan pituus = 64us
 timer 1 toimii 20/4 MHz= 5MHz eli 0.2us => timer 1 tuloon
 laskennallisesti 64us/0.2us = 320 pulssia  timeriin
 reload  = 256*256- 320= 65216   0xFCE0
 Interrupt overhead 23*0.2us = 4.6us
 0xFFFF- 0xFEE6= 281 pulssia *0.2us = 56.2us  interupt overhead  => 64us 

===============================*/
#int_timer1
void TIMER1_isr(void)
{
set_timer1(0xFEE6);   // 0xFEE7 = 63.8us, 0xFEE6= 64.2us   0xFEE5 = 63.4us
#asm
 NOP
#endasm
IRANTO =!IRANTO;
/**********  ASSEMBLERILLA korjataan pieni aika virhe
Nyt on tasan 64us
*/

}
int16 sectimer;  // apumuuttuja ledille
/* ==============  kekytus timer0 ======================00000
 20MHz/4 *256=> 51.2us
1000000us / 51.2us  = 19531,25 pulssia
 simuloitu aika =  1.000039 s
*/
#int_timer0
void TIMER0_isr(void){
if(sectimer--) return ;

    REDLED = !REDLED;
     sectimer=19531;

  if( ++ sec > TIMEOUT )  //  3600s i on kulunut, lopeta laitteen toiminta
      while(1)
         POWER =0;  // sammuta laitteen toiminta nyt
}

/******==============Pääohjelma======================== ***/
void main( void)
{
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);  // alusta ajastin Timer0 sisäiselle kellolle ja esijakaja ois
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_1 ); // alusta ajastin Timer1 sisäselle ke
   enable_interrupts(INT_timer1);  // Käynnistä timer1 keskeytys
   enable_interrupts(INT_timer0);   // Käynnistä timer0 keskeytys
   enable_interrupts(GLOBAL);       // Salli kaikki valitust keskeytykset
   set_tris_a(0);  // kaikki portin A suunnat ovat antoja
   
    POWER =1;  // pidä laitetta päällä
 
    sec=0;    // sekuntilaskurin nollaus
    sectimer=19531;  // alusta sekunttiapulaskuri
while (1); // tee ikuisesti tätä eli ei itään . kaikki työ tehdään keskeytyksessä

}



Alla PrismaIR Hex koodi     

:1000000000308A006C280000831A0A28A500030E1D
:10001000A6000F288312A500030EA600A6140A0846
:10002000AD008A018313A50E0408A7002008A800CC
:100030002108A9002208AA002308AB002408AC006C
:1000400083128C308400001C27280C1840288B1E3B
:100050002B280B194A28270884002808A000290803
:10006000A1002A08A2002B08A3002C08A4002D0838
:100070008A00260E83008312250EA6188316090017
:10008000FE308F00E6308E000000013085060C1037
:100090008A112B283108A30030080319B103B003DB
:1000A0002304031D6928023085064C30B1004B3013
:1000B000B000AE0A0319AF0A2F080D3C03186928D7
:1000C000FF3A031D67282E08103C03186928051104
:1000D00067280B118A112B2884011F3083051F13F9
:1000E00083161F109F101F119F1107308312990054
:1000F00083160108C73908388100853083129000C3
:1001000083160C1483128B16C0308B0400308316B8
:10011000850083120515AF01AE014C30B1004B30A4
:06012000B000912863000D
:02400E00D231AD
:00000001FF
;PIC12F675






MPLAB7.40  simulaattori  näyttää taajuuden oikein ja testaus oikella laitteella näyttää saman  

Käskyjä on kulunut 320 kpl ja aikaa tasan 64us, jonka jälkeen vaihdetaan IR_LEDIn tilaa 

Huomaa, että yksi nop-käsky virittää taajuuden oikein 

Seuraavaksi tarkastellaan sekunnin ja 3600 sekunnin ajat


Sekunnin merkkivalon ajan mittaus MPLAB simulaattorilla . Sekunti on 1.0037 sekuntia., joka riittää  mainiosti


Komas aika on tunti. Sen simulointia on lyhennetty 3 sekuntiin. Tämä simulointi ei poista oikean mittauksen tarvetta 

Koodioa kului 284 tavua 2048 tavusta,

Siis ainakin teoriassa kolme aikaa toimivat vaaditulla tavalla




Haluatko suorittaa Suomen Robottiyhdistyksen robottitekniikan tutkinnon?
Kokeile osaatko vastata ylläoleviin kysymyksiin omilla sanoillasi.
Vastauksethan on jo valmiina!.
Käytät tietysti omia ohjalmelmiasi ja lähetä vastaukset  robot@propelli.fi
Tehtävä #2
Sinun pitää mitata yllä olevan taajuuslähettimen IR-taajuus. Erityisesti toimiiko se koko-ajan  ( yli minuutin) ilman virheitä.
Miten teet sellaisen laitteen tai ohjelman.







Suomen robottiyhdistys

Tässä eräs toinen etäisyyden mittaukseen pystyvä laser laite




Pöytä täynnä ideoita ja laitteita. Vasemmalla Hannu OH3KW, oikealla Tom. Jorma seuraa keskustelua.




  


 





 

 


Hannu teki DIGITC mittauksia uudella DIGI TV mittarillaan

DIGITV mittarilla tietää miten kuva näkyy ja tarvitaanko vahvistimia

 


Jorma valmiina mestästykseen kameralla.
Takana karhut ovat muistoja aikasemmilta metsäsätysretkiltä


Jorma yrittää kalastaa pitkällä putkella, mutta kädet menevät kohmeeseen.  Vaikka järvi ei ole jäässä, ilma on raikas.  Lämpötila on noin 3 C.


Juha ohjelmoi IR-lähetintä ensimmäinen kerran. Oskilloskooppi on  taajuusmittausta varten valmiina



Toinen prisma




Se toimii !
Robottitakymetri seuraa itse tehtyä IR-lähetintä.
Kukaan maailmassa ei ole vielä tehnyt sitä.
Keltainen laite oikella  tanssii nöyrästi IR-lähettimen toimiessa tanssin ohjaajana. Reijon kädessä on uusi IR-seurantalähetin, joka toimii noin 100 metrin etäisyydeltä. Lähetin laitetaan prismaan kiinni. Prisma palauttaa mittarista lähtevän säteen ja sen tiedon avulla tehdään varsinainen etäisyysmittaus.




Juha virittelee tykkiä kuntoon . Pian alkaa esitelmät

Tällä kertaa esitelmävuorossa oli Pekka, joka kertoi digitaalisista vahvistimista osa #1
Kuvassa nykyaikainen 500W D-luokan stereovahvistin . Esitelmä on AudioCd:llä muidenkin katseltavana.

Mukaan pääsivät myös Pekan historialliset putkivahvistimet joiden esikuvina olivat Fenderit

50W  Fender orkesterivahvistin vuodelta 1960.
 Sen ulkonäkö on edelleen sama.
Miksi mennä muuttamaan huippuunsa kehitettyä tuotetta.

Osa Fenderin pääteastetta.
Huomaa käyttöjännite 370V .
Missä on  takaisinkytkentä?
Onko pääteasteen putkissa  biasointia?
Transistoriasteissa pitää käyttää pääteastetta AB-luokassa, miten putkilla?


Rauhallinen ilta KangasalanVesijärvellä

Kangasalan robottiranta syksyllä 2006. Sauna #3 on aivan vieressä




Ukonlakkeja pihamaalla


Pekan uusi ja  kevyt 160 watin matkakaiutin ( valkoinen kotelo) täristeli pöytiä



Pekan uusia kortteja.


Henkka katsastaa Juhan prisma-autoa









Tomilla oli taas uusi kalansilmäobjektiivi testikäytössä


Ilta alkoi hämärtyä ja sauna oli valmiina


Kolvit , USB-valo, Internet liityntä (puhelin) ja PC ovat tärkeitä varusteita robottimiehillä


Aamulla olivat vain reippaimmat robottilaiset hereillä






Henkka ihailee Tomin uutta ohjelmaa

Robottiyhdistyksen pääsivulle