Robottiyhdistyksen pääsivuille
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.
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


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


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
Tässä eräs toinen etäisyyden mittaukseen pystyvä laser laite

|

DIGITV mittarilla tietää miten kuva näkyy ja tarvitaanko vahvistimia
Jorma valmiina mestästykseen kameralla.



