Sida 6 av 6
Postat: 24 november 2005, 06:43:08
av JannoL
Kul grej, kan nån sparka mig åt rätt håll, var ska jag börja för att kunna lära mig o bygga en sån blink-tack-grej. Verkar vara lagom enkel o börja med för o lära sig.
Jag har iof bara programmerat i php/perl men man ska kunna assembler va?
...hoppas att idén hålls vid liv o utvecklas.
Postat: 24 november 2005, 12:39:30
av lgrfbs
Tror att C skulle passa dig efter som det ligger nära Perl, men även pascal finns till MCU kretsarna.
* välj MCU
* kolla efter lämplig programmerare
* välj programspråk ASM/C/Pascal
* Val av komponenter
Postat: 17 oktober 2006, 16:01:36
av Baloo
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
Postat: 17 oktober 2006, 16:10:11
av JimmyAndersson
Ett fel är att bilden är 1166x762 trots att det klart och tydligt står såhär:

Postat: 18 oktober 2006, 10:01:19
av Schnegelwerfer
180k som basmotstånd till BC547 är på tok för stort om du vill få transistorn att bottna ordentligt.
Sätt dit 2,7k även som basmotstånd, då kan du vara säker på att transistorn bottnar.
Sedan skulle jag även ha satt pullup-motstånd till 12V på BC547s kollektorer.
Postat: 18 oktober 2006, 18:50:53
av Baloo
Ä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.
Postat: 18 oktober 2006, 22:33:59
av Schnegelwerfer
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.
Postat: 18 oktober 2006, 22:44:49
av Schnegelwerfer
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ö...
Postat: 27 oktober 2006, 12:05:13
av Baloo
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!
Postat: 7 november 2006, 19:19:08
av Eddi
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