Sida 3 av 4

Postat: 24 januari 2005, 14:49:10
av gurgalof
hur räknar du ut att
pr2 = 130 är 38kHz
samt duty cyclen

Postat: 25 januari 2005, 00:19:54
av $tiff
>> gurgalof
Jag kollar (som nybörjare) i databladet för PIC16F877A, läser igenom PWM-kapitlet, kliar mig i mitt obefintliga skägg, läser igen, knappar lite på miniräknaren, testar lite kod, mäter lite med oscilloskop, räknar lite till och upprepar tills jag får ett lyckat resultat.

Postat: 31 januari 2005, 10:47:28
av Jine
Stiff, Har inte haft tid o testa koden/erna fören nyss, måste man loopa koden till irdioderna?

det händer nämligen inte ett skit..

Postat: 31 januari 2005, 11:25:35
av $tiff
Ajfan. Det är taget direkt från koden till min robot i projektarbetet, och den funkade ju.
Det ska räcka med en puls om 1ms för att IR-sensorn ska reagera. Koppla in en vanlig lysdiod i serie med din(a) IR-LEDs och se om den lyser/blinkar.

Postat: 31 januari 2005, 19:10:09
av Jine
:S Händer absolut inte ett dugg med den koden.. använder en pic16f877a o 20mhz kristall.. koden är:

Kod: Markera allt

'-----------------------------------
'38khz IR DIoder
'-----------------------------------
TRISC.2 = 0
CCP1CON = %00001100
T2CON = %00000100
PR2 = 130
CCPR1L = 65
'-----------------------------------
testat men vanliga leds :(

Men annars så kan jag säga att mer en fjärkontroll riktat mot ena dioden så svänger den, det fugerar..

Postat: 31 januari 2005, 21:39:19
av $tiff
Mycket märkligt. Jag ser inget fel med koden. Möjligtvis kanske det krockar med något annat i ditt program...?

Postat: 1 februari 2005, 19:41:31
av Jine
Jag tror de beror på att jag lånade 5v (trodde jag) från datorn, men det visade sig vara 12v :oops: brände 7 olika pic kretsar..

men sen bytte jag ut 16f877a mot en 16f627a och då TROR jag det fugerar..

Eftersom ir-led:en "lyser".. men jag tycker det är konstigt eftersom en ir i en fjärr "blinkar" ..


Däremot hajjar jag noll med koden till mottagarna.

Kod: Markera allt

main:
trisc.2 = 0      ' Set portc.2 to output
pause 1         ' Pause 1 ms
trisc.2 = 1      ' Set portc.2 to input 
if portc.2 then goto turn
goto main


turn:
high servon blaha blaha
goto main
är det inte rätt?

Postat: 1 februari 2005, 19:48:08
av $tiff
Var har du kopplat in mottagarna? konfigurera den pinnen de är inkopplade till som ingång och läs av den. läser du en nolla så har mottagarna detekterat en IR-signal.

Postat: 1 februari 2005, 20:50:02
av Jine
Dom är inkopplade på Portc.2 (ccpp1 PMWkanal 1)

Typ:


If vänstrair = 0 then vänster? eller räker det med ir vänsterir then?

Postat: 1 februari 2005, 23:55:15
av $tiff
Du kan inte koppla in IR-mottagarna till utgången för IR-lysdioderna!
Koppla IR-mottagarna till en ledig port. På portc.2 ska det bara sitta lysdioder med serieresistor!

Postat: 4 februari 2005, 19:02:37
av Jine
Kliiinggg!!! :idea:

Tack.. Tack tack..

Du sa nåt där ;) Inte de att dom ska kopplas på olika portar givetvis.. men däremot att jag har alltid använd en EXTRA Pic för ir dioderna..


Men däremot har jag NÄSTAN fått igång allt nu.. Har läst hela picbasic pro manualen o suttit o exprimenterat hela veckan..^


Tänkte bara dela med mig av MIN kod (fugerar nästan, Lite störningar, servorna hackkkar, den svänger lite fel osv :P)

Kod: Markera allt

'-----------------------------------------------------------------' 
'   Servo Controller (C) Copyright Jim Nelin                      ' 
'   All Rights Reserved     		                              ' 
'   Date: 2005-02-04                                              '
'                                                                 '
'                                                                 '
'                      Part: Servo/Ir Modules                     '
'                           PIC16F877A	                          ' 
'-----------------------------------------------------------------' 
DEFINE OSC 20					' Define 20 MHz
'-----------------------------------------------------------------'
'   Initiate PWM for IR-modulation (38kHz, 50% duty @ 20MHz OSC) 
'-----------------------------------------------------------------'
'-----------------------------------------------------------------'
TRISC.2 = 0     		 'Set Portc.2 output 
CCP1CON = %00001100  	 'Mode select = PWM 
T2CON = %00000100   	 'Timer2 ON + 1:1 prescale 
PR2 = 130      			 '38kHz PWM 
CCPR1L = 65      		 '50% duty cycle 

'--------------------------Variables------------------------------'  
L_IR		VAR		PORTB.3		' Portb.3 = L_IR
R_IR		VAR		PORTB.4		' Portb.4 = R_IR
L_Servo 	VAR		PORTB.5		' Portb5 = L_Servo
R_Servo		VAR		PORTB.6		' Portb.5 = R_Servo
'-----------------------------------------------------------------' 
'-----------------------End of Variables--------------------------'
'-----------------------------------------------------------------' 

Main:			' ..=--== Start Main Program! ==--=..

'-----------------------Pulse IR-Modules--------------------------' 
Output L_IR		' Set L_IR Output
Output R_IR		' Set R_IR Output
Pause 1			' Pause 1 ms 
Input L_IR		' Set L_IR Input
Input R_IR		' Set R_IR Input
'-----------------------------END---------------------------------' 
'-----------------------------------------------------------------' 
'------------------Read Inputs From IR-Modules--------------------'

IF L_IR = 0 Then Moveright		' Check if L_IR See something...
IF R_IR = 0 Then Moveleft		' Check if R_IR See something...
'-----------------------------------------------------------------' 
GoSub Nothing					' Goto Sub If IR failed
GoTo Main						' Loop
'-----------------------------------------------------------------' 
'-----------------------------------------------------------------' 

Nothing: 

High L_Servo					' High L_Servo
High R_Servo					' High R_Servo
Pause 1							' Pause 1 ms
Low L_Servo						' Low L_Servo
Low R_Servo						' Low R_Servo
Pause 20						' Pause 20 ms
Return							' Go back to main routine that called us..

'-----------------------------------------------------------------' 

Moveright:
High R_Servo					' High R_Servo
Pause 1							' Pause 1 ms
Low R_Servo						' Low R_Servo
Pause 20						' Pause 20 ms
GoTo Main

'-----------------------------------------------------------------' 

Moveleft:
High L_Servo					' High L_Servo
Pause 1							' Pause 1 ms
Low L_Servo						' Low L_Servo
Pause 20						' Pause 20 ms
GoTo Main

'-----------------------------------------------------------------' 
'-----------------------------------------------------------------'
'--------------------------END OF FILE----------------------------'

Postat: 4 februari 2005, 22:58:13
av Jine
Vet itne varför nu men jag har sökt o sökt o sökt o nu känns det som jag kan jävla massa mer än innan.. jag skrotade allt jag hade kopplat o NU börjar jag om från början!! :D



Roboten kommer bestå av:


Pic16f877a x 2
Lite div kondingar
4st IR dioder 940nm
4st IR Mottagare 940nm 38khz
20mhz kristall
En liten Pizeo (stavning) summer för o tala om om nåt gick på tok
Max232
4st Servos (höger/vänster, pan/tilt)
Trådlös microkamera (kopplad till tvkort i datorn)
RF Sändare/mottagare (inte exakt bestämt)
4st pots (2st till justering av servorna, 2st till joysticken)
En sony fjärrkontroll (IR)

en jävla massa sladdar :P

2st 6xr6 batterier (6st r6 serie kopplade x2 parrell kopplade)

o lite annat smått o gått..


Mvh Jim o TACK FÖR ALL HJÄLP ALLA SÖTA O GLADA! :D

Postat: 5 februari 2005, 01:11:54
av $tiff
Oj, den kommer nog bli en kul apparat :)

Två 16F877A? Behövs väl inte egentligen, men jag ska inte säga för mycket, jag gjorde ju likadant själv när jag byggde min robot.

Jag tror inte det är så bra att parallellkoppla två 6xR6-pack. Om de har olika spänning kommer de kortsluta varandra tills de uppnår exakt samma spänning, kan vara mindre bra...
Två dioder löser iofs problemet, om du kan leva med spänningsfallet (runt 1 V ) över dem.

Postat: 5 februari 2005, 11:39:05
av evert2
Jine.....använd 4 st lite fetare 1,5 V-batterier istället.
Edit....jag menar förstås 6 stlite fetare batteri istället

Postat: 6 februari 2005, 14:39:54
av Jine
Stiff.. Tror det blir bäst med 2st.. Men jag ska inte avslöja mer.. ;)
O tack för tipset ang batterierna får väl smeta dit nåra dioder också.. ;)


evert2, Har 12st laddningsbara 1,2v batterier..


Dvs 1,2x6=7,2-1v= 6.2 så runt 6,5v (dom laddade batterierna är nästan alltid över 1.2 runt 1.4v)

2x 2300mA

Med andra ord bör jag alltså få en 6,5v/4amp strömkälla.. Sen ska jag filtrera,reglera spänningen till 5 Resp 6v (5v till elektroniken, 6v till servorna) O sen får jag inte glömma dioderna heller ;)

...

Herrejösses jag som alltid har trott att batterier och allt var den enklaste delen :P


----------------------------------------
Nog om det nu, Fick precis igång debugen till picen gissa om jag vart glad.. och åter igen TACK STIFF du vet vad du gav mig som hjälpte mig ;)


Därremot nån som vet varför mina servos inte ändrar riktning när jag pulsar 1ms, 1.5ms eller 2ms den bara går åt samma jävla håll :( (FEL HÅLL)

Mvh Jim