Auto-tack-blinkers
-
- Inlägg: 82
- Blev medlem: 21 september 2005, 18:22:03
- Ort: Eskilstuna 59 (N59°21'28" E16°29'49")
Hej hopp. Nu är kortet klar och ny bil införskaffad så jag tänkte jag skulle sätta igång med det här gamla projektet igen.
Testade ju det här på testbräda förut med förväntat resultat. Nu när jag monterat kortet och sätter i den programmerade kretsen blir resultatet minst sagt förbryllande!
Har kopplat in sex lysdioder på testbräda för att se att det blinkar rätt, men får TOTALT slumpvisa blinkningar! VARFÖR!?
Kan programmet vara fel, det funkade ju förut. Eller kan komponenternas värden göra att PICen reagerar på något konstigt sätt?
Har gjort ett litet testprogram som egentligen ser likadant ut som det riktiga, bara det att till och med det här lilla programmet gör att dioderna bara blinkar slumpvis!
radix DEC
__config 3FF9h
;RAM-adresser för att lägga in variabler
cblock 0Ch
endc
org 0x00
goto Main
org 0x04 ;Interrupt vektor
retfie ;Det finns inga interrupt instruktioner
Main ;Här börjar programmet
;Sätt portarnas riktningar
bsf 3,5 ;Gå till bank1
clrf 6 ;Sätt PORTB till utgångar
movlw b'00001000' ;RA3 blir inport, resten ut
movwf 5 ;Utför
bcf 1,7 ;Ändra Pull-up på PORTB
bcf 3,5
Start
Steg1
movlw 0
movwf 6
btfsc 5,3
goto Steg1
movlw b'111111'
movwf 6
Stop
goto Steg1
end
Kopplingen på kortet är som följer:

Hoppas någon kan se något fel för jag börjar bli rätt villrådig...
/Björn
Red:
Efter Jimmys vänliga rättelse av storlek, vilket jag totalt missat, så förtydligar jag att resistorerna mellan PIC och BC547 är på 180k och resistorer mellan BC547 och BD680 är på 2.7k
Testade ju det här på testbräda förut med förväntat resultat. Nu när jag monterat kortet och sätter i den programmerade kretsen blir resultatet minst sagt förbryllande!
Har kopplat in sex lysdioder på testbräda för att se att det blinkar rätt, men får TOTALT slumpvisa blinkningar! VARFÖR!?
Kan programmet vara fel, det funkade ju förut. Eller kan komponenternas värden göra att PICen reagerar på något konstigt sätt?
Har gjort ett litet testprogram som egentligen ser likadant ut som det riktiga, bara det att till och med det här lilla programmet gör att dioderna bara blinkar slumpvis!
radix DEC
__config 3FF9h
;RAM-adresser för att lägga in variabler
cblock 0Ch
endc
org 0x00
goto Main
org 0x04 ;Interrupt vektor
retfie ;Det finns inga interrupt instruktioner
Main ;Här börjar programmet
;Sätt portarnas riktningar
bsf 3,5 ;Gå till bank1
clrf 6 ;Sätt PORTB till utgångar
movlw b'00001000' ;RA3 blir inport, resten ut
movwf 5 ;Utför
bcf 1,7 ;Ändra Pull-up på PORTB
bcf 3,5
Start
Steg1
movlw 0
movwf 6
btfsc 5,3
goto Steg1
movlw b'111111'
movwf 6
Stop
goto Steg1
end
Kopplingen på kortet är som följer:

Hoppas någon kan se något fel för jag börjar bli rätt villrådig...
/Björn
Red:
Efter Jimmys vänliga rättelse av storlek, vilket jag totalt missat, så förtydligar jag att resistorerna mellan PIC och BC547 är på 180k och resistorer mellan BC547 och BD680 är på 2.7k
Senast redigerad av Baloo 17 oktober 2006, 16:23:58, redigerad totalt 1 gång.
- JimmyAndersson
- Inlägg: 26545
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
- Schnegelwerfer
- Inlägg: 1863
- Blev medlem: 8 november 2004, 13:46:56
-
- Inlägg: 82
- Blev medlem: 21 september 2005, 18:22:03
- Ort: Eskilstuna 59 (N59°21'28" E16°29'49")
Är inte helt säker på hur pull-up och pull-down funkar och hur man dimensionerar det. Har Du kikat på det jag räknat på på föregående sidor. Skulle Du kunna utveckla lite mer hur Du kom fram till att värdena var fel på basmotstånden till BC547? Vore mycket tacksam. Hade nästan antagit att motstånden var för små, då jag från början räknade med att dom skulle vara på 220k.
- Schnegelwerfer
- Inlägg: 1863
- Blev medlem: 8 november 2004, 13:46:56
I din koppling vill du ju att BC547 bottnar (öppnar maximalt).
När transistorn bottnar (saturation) blir Hfe mycket mindre än vad den är i det normala arbetsområdet.
Databladet anger en VCEsat vid en viss kollektor- och basström. VCEsat är det spänningsfall som kommer att ligga över transistorn när den är helt bottnad.
Exempel: BC547C har VCEsat = 90mV vid Ib= 0,5mA och Ic=10mA. Hfe blir alltså i detta fall endast 20ggr! Jag brukar för enkelhetens skull alltid räkna med en Hfe på 10ggr när jag dimensionerar småsignaltransistorer som strömbrytare.
I ditt fall vid bottning av BC547:
Ic = (VCC - VBEon(BD680) - VCEsat(BC547))/2,7k
--> Ic = (12 - 2,5 - 0,09)/2700 = 3,5mA
Med en Hfe på 10ggr vill vi alltså ha en basström in på BC547 på ungefär 0,35mA.
Detta ger:
Spänning över basmotstånd = 5 - VBEsat(BC547) = 5 - 0,7 = 4,3V
Värdet på basmotståndet blir då:
Rb = 4,3/0,00035 = ~12kOhm
Eftersom du redan använder 2,7k-motstånd så kan du lika gärna använda dem (detta ger en basström på 1,6mA).
Angående pullup-motstånd på BC547s kollektorer:
Det är aldrig bra att låta basen på BD680 "hänga i luften" (som den ju gör när utsignalen från din PIC är låg). Därför är det bra att se till att den lyfts upp m.h.a ett (stort) motstånd till +12V.
Värdet på motståndet spelar ingen större roll, jag hade nog valt det i spannet 50k-100k.
När transistorn bottnar (saturation) blir Hfe mycket mindre än vad den är i det normala arbetsområdet.
Databladet anger en VCEsat vid en viss kollektor- och basström. VCEsat är det spänningsfall som kommer att ligga över transistorn när den är helt bottnad.
Exempel: BC547C har VCEsat = 90mV vid Ib= 0,5mA och Ic=10mA. Hfe blir alltså i detta fall endast 20ggr! Jag brukar för enkelhetens skull alltid räkna med en Hfe på 10ggr när jag dimensionerar småsignaltransistorer som strömbrytare.
I ditt fall vid bottning av BC547:
Ic = (VCC - VBEon(BD680) - VCEsat(BC547))/2,7k
--> Ic = (12 - 2,5 - 0,09)/2700 = 3,5mA
Med en Hfe på 10ggr vill vi alltså ha en basström in på BC547 på ungefär 0,35mA.
Detta ger:
Spänning över basmotstånd = 5 - VBEsat(BC547) = 5 - 0,7 = 4,3V
Värdet på basmotståndet blir då:
Rb = 4,3/0,00035 = ~12kOhm
Eftersom du redan använder 2,7k-motstånd så kan du lika gärna använda dem (detta ger en basström på 1,6mA).
Angående pullup-motstånd på BC547s kollektorer:
Det är aldrig bra att låta basen på BD680 "hänga i luften" (som den ju gör när utsignalen från din PIC är låg). Därför är det bra att se till att den lyfts upp m.h.a ett (stort) motstånd till +12V.
Värdet på motståndet spelar ingen större roll, jag hade nog valt det i spannet 50k-100k.
- Schnegelwerfer
- Inlägg: 1863
- Blev medlem: 8 november 2004, 13:46:56
Ovanstående inlägg var bara en allmän kommentar, jag tror att din koppling borde fungera hyfsatäven med dina originalkomponentvärden.
Jag tror att dina problem beror på andra orsaker, troligtvis glappkontakt, dåliga lödningar eller liknande. Jag skulle också har fixat bättre filtrering/skydd på spänningsmatningen, bilar har ju en ganska störd elmiljö...

Jag tror att dina problem beror på andra orsaker, troligtvis glappkontakt, dåliga lödningar eller liknande. Jag skulle också har fixat bättre filtrering/skydd på spänningsmatningen, bilar har ju en ganska störd elmiljö...
-
- Inlägg: 82
- Blev medlem: 21 september 2005, 18:22:03
- Ort: Eskilstuna 59 (N59°21'28" E16°29'49")
Hej igen.
Skulle skriva och tacka Dig för informationen, men så fick jag en fatal hårddiskkrasch. Men nu är jag up and running igen. Så jag gör det nu i stället! Tack så hemskt mycket för informationen om att räkna på transistorer som switch. Beräkningarna jag gjort på föregående sidor är det jag gjort enligt förstärkarprincip, dvs helt annat!
Får ta och koppla upp kedjan på testbräda och se när det funkar som det ska. Dock är jag inte helt på det klara med vad pull-up och pull-down innebär. Har sökt men inte hittat det här inne. Vet att det är ett motstånd men vet inte helt när den ska användas och hur den ska beräknas.
Trevlig helg!
Skulle skriva och tacka Dig för informationen, men så fick jag en fatal hårddiskkrasch. Men nu är jag up and running igen. Så jag gör det nu i stället! Tack så hemskt mycket för informationen om att räkna på transistorer som switch. Beräkningarna jag gjort på föregående sidor är det jag gjort enligt förstärkarprincip, dvs helt annat!
Får ta och koppla upp kedjan på testbräda och se när det funkar som det ska. Dock är jag inte helt på det klara med vad pull-up och pull-down innebär. Har sökt men inte hittat det här inne. Vet att det är ett motstånd men vet inte helt när den ska användas och hur den ska beräknas.
Trevlig helg!
Google brukar veta lite om allt. Första träffen förklarar ganska bra.
http://www.google.fi/search?hl=sv&q=pul ... 3%B6k&meta
http://www.google.fi/search?hl=sv&q=pul ... 3%B6k&meta