Jag håller just på att testa programmet för stegmotorstyrningen av backslaget. För att initiera fram neutral och back har jag tre sladdstumpar ca 40 cm långa anslutna till port D4-D6 som jag sluter til jord för att ge signal till µC (PIC18F2550) Jag har satt RDPU_bit till 1 (1 = PORTD pull-ups are enabled by individual port latch values).
När jag slår av eller på lödkolven så initieras slumpvis någon av portarna och motorn startar. om jag kortar ner kablarna till någon cm så funkar det utan störningar.
När det blir skarpt läge kommer sladdarna att bli ännu längre mellan manöverpulpeten och MCU så även om man har skärmad kabel kanske det kan bli problem?
Frågan är om jag måste sätta hård pull-up med resistorer eller om jag gjort något fel som jag inte fattar.
Edit: Skall vara PIC18F4550 inte PIC18F2550
Senast redigerad av SeniorLemuren 4 april 2013, 16:51:19, redigerad totalt 1 gång.
En optokopplare mellan knappen och ingången. Då kan du mata ingången med högre spänning, jag antar att du har 12V (eller 24V) lättillgängligt.
Ett RC-filter på ingången som TomasL föreslår gör ju att störningar hanteras ännu bättre.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Det verkar vara en bra lösning. Jag hittade ett gäng 4N33 i mina gömmor. Dom borde väl funka?
Jag har lite svårt att tyda kurvorna i databladet. Tänker mata med 12 V och tillåten ström är 200 mA. Input Forward Voltage får jag till att det är 1.2 V. Jag får det då till att motståndet skall vara minst 54 ohm. 12-1.2= 10.8 V / 0.2 A För att inte komma för nära max ström kanske man ska välja 100 mA. Resistans = 100 ohm. Eller kan man välja ännu lägre ström?
Nej, 200 mA klarar den bara om du ger den väldigt korta pulser. Ska du koppla signaler skapade av långsamma människofingrar är det kring 10 mA du ska hålla dig. Absolut Max för kontinuerlig signal = 80 mA.
Det är inte min starka sida direkt. Men eftersom den skall styra en digital ingång på en PIC18F4550 så borde den kunskapen redan finnas här på forumet. Kanske man kunde få en vink.
Ett alternativ är att låta opto-kopplaren styra en analog ingång till PIC.
Kopplingen skulle då på ingången bli 12V -> 1kohm -> Slinga med brytare -> Anod LED -> Katod -> GND
På utgången blir det: 5V -> motstånd (1k typ) -> kollektor på optokopplare -> emitter på optokopplare -> GND
Koppla PIC ingång till kollektor. En 100 nF konding mellan kollektor och GND funkar som filter
Lägger man motståndet på inslingan nära 12V så får man kortslutningsskydd om man skulle råka klämma sladden etc.
Använder man en analog ingång kan man mjukvarumässigt lägga en lämplig tröskel för att detektera sluten slinga.
Enklast är ändå att dimensionera kollektormotståndet korrekt! En "typisk OC" har som sämst en CTR på 50%, detta betyder att om man kör 10mA i sändardioden kommer utgången att dra (minst) 5mA. För att få den att dra "långt nog" mot det valda nivå får kollektormotståndet alltså inte bli lägre än 1k.
Använd 2,2k.
Sedan är det en mycket viktig detalj: Brytaren som ska ge signalen... Kan den jobba med så låg ström som 10mA? Många brytare och reläer har en minste ström de kan jobba stabilt med, helt enkelt för att de kan behöva lite ström för att "bränna igenom" oxidering.
Utan att krångla till det hela så ta 1k i serie med led på optokopplaren du får då ca 10mA, fullt tillräckligt
Sedan använder du dig av din weak pullup på PICen, det är ju faktiskt till detta som den är avsedd.
Kommer granaterat att fungera helt ok
Glömt hade jag inte. Jag trodde det räckte med att sätta RDPU till 1 resp. nollställa RBPU-biten för register D resp reg. B.
I PIC16F690 finns ju ett register för pull-up på varje enskild bit men jag hittar inget motsvarande i PIC18F455. Så hur gör man? Hittar ingen information utöver RDPU,RBPU i databladet.