Sida 1 av 2
hur koppla fototransistor till PIC16f690?
Postat: 29 maj 2009, 22:13:51
av hatt
Hej!
Har gett mig in på att försöka låta en PIC läsa av pulser från min elmätare.
Har byggt el "sensor" enligt:
Har förstått att värdet på r1 antagligen behöver ändras om man ska köra den på en uC.
Till frågan:
Hur kopplar jag in den?
Vilken tråd ska till GRND, +5, t.ex. pinne 0 PORTA?
Tick tack...
Re: hur koppla fototransistor till PIC16f690?
Postat: 29 maj 2009, 23:15:39
av sodjan
Har du kollat alla andra trådar på forumet som handlar om
att koppla en PIC till en elmätare? Sannolikheten är ganska
stor att dina frågor redan har behandlats där...
Re: hur koppla fototransistor till PIC16f690?
Postat: 29 maj 2009, 23:59:30
av hatt
Jaha. man behövde visst bara en spark där bak för att hitta rätt.
http://elektronikforumet.com/forum/view ... 0&start=30
Re: hur koppla fototransistor till PIC16f690?
Postat: 30 maj 2009, 14:22:03
av hatt
Denna kod har jag nu. Vill alltså att pinne 0 i PORTA ska känna av när den går hög och då tända en led, samt släcka den då den är låg. D.v.s. Min led på PORTC,2 ska blinka då PORTSA,0 blir hög.
Hur långt är jag ute och cyklar???
Kod: Markera allt
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
Start:
bsf STATUS,RP0
clrf TRISC
clrf TRISB
movlw 0xFF
movwf TRISA
bcf STATUS,RP0
;Init
; BSF TRISC, 2
Main
BTFSS PORTA, 0
BSF PORTC, 1
BTFSC PORTA, 0
BCF PORTC, 1
GOTO Main
end
Re: hur koppla fototransistor till PIC16f690?
Postat: 30 maj 2009, 15:06:04
av sodjan
> _MCLRE_OFF
Kör gärna "ON" ifall du dels inte har en programmerare som
säkert fixar "OFF", dels är helt säker själv på konsekvenserna med "OFF".
Hur har du det med eventuella analoga funktioner på pinnarna ?
Har du läst "PORTA" kapitlet i databladet ? Speciellt exempelkoden där.
> bsf STATUS,RP0
Läs på om BANKSEL i MPASM manualen.
Undvik att hantera RP0/RP1 "för hand".
> movlw 0xFF
> movwf TRISA
Gör inte pinnar till ingångar i onödan.
Om du inte vet att hantera ingångar rätt (d.v.s inga öppna ingångar).
I detta fall räcker det med att RA0 är ingång.
> Min led på PORTC,2 ska blinka då PORTSA,0 blir hög.
Jag förstår vad du menade, och det var nog inte riktigt så som du skrev...
Sen om koden gör som du vill är omöjligt att veta, eftersom vi
inte vet hur din LED är kopplad. Antingen fungerar det som du vill eller
så så fungerar det tvärtom (eller inte alls om det är helt fel kopplat...

).
Det fungerar som du vill om LED'en är kopplad (via ett mostånd) från RC1 till +5V.
> Hur långt är jag ute och cyklar???
Lite uppför och motvind just nu, men det vänder snart !

Re: hur koppla fototransistor till PIC16f690?
Postat: 30 maj 2009, 21:44:13
av hatt
Så här ser min kod ut.
Kod: Markera allt
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
Start:
banksel TRISA
clrf TRISA
clrf TRISB
clrf TRISC
movlw 0xFF ; ja jag vet... Har bara inte trixat ut hur man väljer enstaka pinnar
movwf TRISA
banksel PORTA
Main
BTFSS PORTA, 3
BSF PORTC, 3
BTFSC PORTA, 3
BCF PORTC, 3
GOTO Main
end
Om jag ger pinne RA3 +5V borde inte led på RC3 tändas då? (fungerar om jag sätter +5V direkt på RC3. Sitter led på )
Hmmm.. måste fråga. Kan väl i bästa fall locka fram några skratt från er i stugorna... Ska RA3 vara analog eller digital?
Tack så länge.
Re: hur koppla fototransistor till PIC16f690?
Postat: 31 maj 2009, 01:16:07
av sodjan
OK. Om du tänker ge fullständigt fan i att läsa den hjälp du får eller att tänka till
alls själv, så säg det från början så så man slipper skriva mer i tråden.
> Hur långt är jag ute och cyklar???
Ja.
Re: hur koppla fototransistor till PIC16f690?
Postat: 31 maj 2009, 07:50:30
av hatt
Ojdå... Så pass lång cykeltur?
Återkommer med vettigare frågor

Re: hur koppla fototransistor till PIC16f690?
Postat: 31 maj 2009, 11:29:51
av sodjan
Det var mest att jag skrev ett ganska långt inlägg med 4-5 olika synpunkter
och tips, men i ditt nästa inlägg såg det ut som att du inte hade läst
något alls av det. *Något* av det som jag kommenterade borde ha föranlett
t.ex en följdfråga eller liknande.
En annan sak...
> movlw 0xFF ;ja jag vet... Har bara inte trixat ut hur man väljer enstaka pinnar
> movwf TRISA
Men du sätter ju varje enstaka pinne till ingång genom att sätta motsvarande TRISA
bit till "1" !? Kan du förklara närmare vad det är du inte har "trixat ut" ? Sätt bara
den pinne/bit som ska vara ingång till "1" och de övriga till "0". I just detta fall
(med RA3 som ingång) så blir det :
> movlw b'00001000'
> movwf TRISA
Använd gärna binära värden till TRIS registren så syns det tydligare vilken
pinne som är in- respektive utgång. Inte hex värden eller (allra sämst)
decimala värden.
Sen, när du är tillbaka från cykelturen, kan du kolla lite i databladet och
se till att t.ex analoga funktioner är avslagna...

Re: hur koppla fototransistor till PIC16f690?
Postat: 31 maj 2009, 17:29:57
av v-g
För att sätta TRISregistren tydligt. Kör nåt liknande detta
Då ser du snabbt vilka pinnar du har som ingång. Normalt lämnar du aldrig en ingång oinkopplad det kan få roliga följder som är snudd på omöjliga att felsöka, ett exempel är att när du för handen över PICen så kan pinnen reagera särskilt om den sitter med en antenn (kabelstump) i.
Annat (och enligt mig väldigt bra sätt) är att skriva:
i koden skriver du sen bara
Det finurliga med detta är att plötsligt vill du ändra port och det enda stället du ändrar på då är (trumvirvel) i DEFINEn.
Re: hur koppla fototransistor till PIC16f690?
Postat: 31 maj 2009, 22:21:33
av hatt
Basic fråga:
Hur gör jag för att göra t.ex pinne RA2 hög?
Ska jag använda mig av internal pull-up eller externt motstånd? Smaksak eller?
+5,GRND, motstånd(internt?), pinne (RA2) ...
Förklara gärna för en förvirrad newbie hur jag fysiskt kopplar detta tack...
Re: hur koppla fototransistor till PIC16f690?
Postat: 31 maj 2009, 23:14:14
av sodjan
> Hur gör jag för att göra t.ex pinne RA2 hög?
Om den är utgång, via PORTA.
Om den är ingång, beror på vad RA2 ska användas till.
> Ska jag använda mig av internal pull-up eller externt motstånd? Smaksak eller?
Ja, i princip. Beror fortfarande lite på vad RA2 ska användas till.
> +5,GRND, motstånd(internt?), pinne (RA2) ...
> Förklara gärna för en förvirrad newbie hur jag fysiskt kopplar detta tack...
http://www.seattlerobotics.org/encoder/ ... asics.html
http://everything2.com/title/Pull-up%2520resistor
http://www.acroname.com/howto/button/button.html
http://www.francisshanahan.com/www/inde ... resistors/
Re: hur koppla fototransistor till PIC16f690?
Postat: 1 juni 2009, 13:41:58
av hatt
Med risk för att bli hängd...
Nu blinkar det som det ska, så något måste jag väl ha förstått.
Uppenbara fel i koden?
Om jag ändrar till _MCLRE_ON fungerar det inte alls, dvs leden blinkar inte.
Vad har jag missat?
Kod: Markera allt
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
org 0
Start
BANKSEL PORTA
CLRF PORTA ;Init PORTA
BANKSEL ANSEL
CLRF ANSEL ;digital I/O
BANKSEL TRISC
CLRF TRISC ;PORTC as output
MOVLW b'00000100' ;Set RA2 as inputs
MOVWF TRISA ;and set RA<5:3,1:0> as output
BANKSEL PORTA
CLRF PORTC ;init PORTC
Main
BTFSS PORTA,2
BCF PORTC,2
BTFSC PORTA,2
BSF PORTC,2
GOTO Main
end
Re: hur koppla fototransistor till PIC16f690?
Postat: 1 juni 2009, 14:19:12
av sodjan
> Om jag ändrar till _MCLRE_ON fungerar det inte alls, dvs leden blinkar inte.
> Vad har jag missat?
Motstånd från MCLR till 5V ?
Re: hur koppla fototransistor till PIC16f690?
Postat: 1 juni 2009, 14:30:20
av hatt
Tack för det. Hur ser koden ut i övrigt?