hur koppla fototransistor till PIC16f690?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
hatt
Inlägg: 39
Blev medlem: 6 mars 2004, 16:50:31

hur koppla fototransistor till PIC16f690?

Inlägg 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:
Bild

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...
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: hur koppla fototransistor till PIC16f690?

Inlägg 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...
hatt
Inlägg: 39
Blev medlem: 6 mars 2004, 16:50:31

Re: hur koppla fototransistor till PIC16f690?

Inlägg 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
hatt
Inlägg: 39
Blev medlem: 6 mars 2004, 16:50:31

Re: hur koppla fototransistor till PIC16f690?

Inlägg 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
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: hur koppla fototransistor till PIC16f690?

Inlägg 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 ! :-)
hatt
Inlägg: 39
Blev medlem: 6 mars 2004, 16:50:31

Re: hur koppla fototransistor till PIC16f690?

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: hur koppla fototransistor till PIC16f690?

Inlägg 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.
hatt
Inlägg: 39
Blev medlem: 6 mars 2004, 16:50:31

Re: hur koppla fototransistor till PIC16f690?

Inlägg av hatt »

Ojdå... Så pass lång cykeltur?

Återkommer med vettigare frågor :oops:
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: hur koppla fototransistor till PIC16f690?

Inlägg 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... :-)
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Re: hur koppla fototransistor till PIC16f690?

Inlägg av v-g »

För att sätta TRISregistren tydligt. Kör nåt liknande detta

Kod: Markera allt

CLRF TRISA
BSF TRISA, 0
BSF TRISA,5
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:

Kod: Markera allt

#DEFINE Red_LED PORTB, 2
i koden skriver du sen bara

Kod: Markera allt

BSF Red_LED
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.
hatt
Inlägg: 39
Blev medlem: 6 mars 2004, 16:50:31

Re: hur koppla fototransistor till PIC16f690?

Inlägg 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...
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: hur koppla fototransistor till PIC16f690?

Inlägg 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/
hatt
Inlägg: 39
Blev medlem: 6 mars 2004, 16:50:31

Re: hur koppla fototransistor till PIC16f690?

Inlägg 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
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: hur koppla fototransistor till PIC16f690?

Inlägg 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 ?
hatt
Inlägg: 39
Blev medlem: 6 mars 2004, 16:50:31

Re: hur koppla fototransistor till PIC16f690?

Inlägg av hatt »

Tack för det. Hur ser koden ut i övrigt?
Skriv svar