PBP problem,koden finns!

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Patrick
Inlägg: 376
Blev medlem: 9 december 2007, 19:13:01
Ort: Uppsala
Kontakt:

PBP problem,koden finns!

Inlägg av Patrick »

Smäller in följande kod på en pic16f628A och kör intern osci.

Kör på utgång B0 ett relä som växlar polaritet till motorerna.
Utgång B1 som styr vänster motor.
Utgång B2 som styr höger motor.
(Relän)
Samt B4,B5 för vänser,resp höger knapp som funkar som sensorer.
(Motstånd från minuspolen[knapparna ligger på plus])

Tanken är att koden skall gå så att när den åker in i något.
Ifall det är höger knapp så ska den stanna,slå på reläet som växlar polaritet,sen slår den på ena motorn,så den vrider sig,sen stänga av allt igen så den kan gå rakt fram till nästa "hinder" inträffar.

När jag kör ner denna kod funkar inget.
Det klickar om reläna o motorerna får spratt..



Koden:

CMCON = 7

push0:
LOW PORTB.0
high PORTB.1
high PORTB.2
IF PORTB.3 = 0 THEN push0
IF PORTB.3 = 1 THEN FOLLO1
IF PORTB.4 = 0 THEN push0
IF PORTB.4 = 1 THEN FOLLO2
GOTO push0


FOLLO1:
LOW PORTB.1
LOW PORTB.2
PAUSE 10

high PORTB.0
PAUSE 100
high PORTB.1
high PORTB.2
PAUSE 2000
LOW PORTB.1
PAUSE 700
LOW PORTB.2
GOTO push0

FOLLO2:
LOW PORTB.2
LOW PORTB.1
PAUSE 10
high PORTB.0
PAUSE 100
high PORTB.2
high PORTB.1
PAUSE 2000
LOW PORTB.2
PAUSE 700
LOW PORTB.1
GOTO push0
Användarvisningsbild
AndLi
Inlägg: 18314
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Inlägg av AndLi »

Jag kan misstänka två saker, spikar i matningsspänningen när reläna slår. Som får picen att starta om...

Kontaktstuds i brytarna som får dina rutiner att kallas flera gånger, men det borde inte inträffa mtp alla Pause i koden. Misstänker att de är i millisekunder?
Användarvisningsbild
Patrick
Inlägg: 376
Blev medlem: 9 december 2007, 19:13:01
Ort: Uppsala
Kontakt:

Inlägg av Patrick »

Kör kondensatorer som jämnar ut spikarna.
Märker ingen större skillnad om jag har kondensatorer på spänningen till matning eller ej.

Hur menar du med kontaktstuds?

Yesbox pause 1000 = 1 sekund :)
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Inlägg av Swech »

Follo1 körs ju så länge som portb.3 = 1
Du borde väl inte köra denna mer än 1 gång?

sen en annan tankemiss....

IF PORTB.3 = 0 THEN push0
IF PORTB.3 = 1 THEN FOLLO1

----hit kan vi aldrig komma..... eftersom portb.3 alltid är 0 eller 1....

IF PORTB.4 = 0 THEN push0
IF PORTB.4 = 1 THEN FOLLO2
GOTO push0


Swech
Användarvisningsbild
Patrick
Inlägg: 376
Blev medlem: 9 december 2007, 19:13:01
Ort: Uppsala
Kontakt:

Inlägg av Patrick »

Jävlar :razz:
Det har du helt sant i.
Skiter jag i IF 0 så funkar den ändå inte.
Har testat ett bra tag med massa olika.
Alltså varje gång tex knappen blir aktiv vid hinder,så ska den köra en slinga så att säga. tex FOLLO1
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> IF PORTB.4 = 0 THEN push0
> IF PORTB.4 = 1 THEN FOLLO2
> GOTO push0

Första raden är så vitt jag ser helt onödig.
Den gör samma sak som tredje raden (i princip)...
Användarvisningsbild
Patrick
Inlägg: 376
Blev medlem: 9 december 2007, 19:13:01
Ort: Uppsala
Kontakt:

Inlägg av Patrick »

Testat

push0:
LOW PORTB.0
high PORTB.1
high PORTB.2
IF PORTB.3 = 1 THEN FOLLO1
IF PORTB.4 = 1 THEN FOLLO2
GOTO push0

Det händer inte ett jotan
Inte ens PORTB.1 eller 2 blir höga
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Har du kvar CMCON = 7 ?
Användarvisningsbild
Patrick
Inlägg: 376
Blev medlem: 9 december 2007, 19:13:01
Ort: Uppsala
Kontakt:

Inlägg av Patrick »

Japp!
Användarvisningsbild
AndLi
Inlägg: 18314
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Inlägg av AndLi »

Jag utgår från att du testat utgångarna med tex:


LOW PORTB.0
high PORTB.1
high PORTB.2
push0:
GOTO push0

Har du gjort det och de funkar skulle jag lagt till en utgång till och anslutit en lysdiod, först i koden skulle jag tänt denna en sekund och sedan släkt den i själva huvudlopen. Skulle nu picen starta om syns det väldigt tydligt då lysdioden tänds i en sekund!

Nu behöver iof inte picen starta om pga spänningsspikar, den kan totalhänga sig med...

kontaktstuds betyder att man inte får ett snyggt överslag från 0->1 eller 1->0 utan att den hoppar några gånger fram ochtillbaka innan den ligger fast på det nya värdet.. Ett väldigt vanligt problem när man försöker läsa av knappar till ett tagentbord
Användarvisningsbild
Patrick
Inlägg: 376
Blev medlem: 9 december 2007, 19:13:01
Ort: Uppsala
Kontakt:

Inlägg av Patrick »

Sätter utgång B1 och B2 hög.
Då är bara B2 hög
När jag sätter en diod på pinnen lyser den inte försn jag tagit bort TIP41C som styr reläna.
Då tänds den.
Drar den så mkt ström att jag inte kan få ut nåra mAmp till dioden samtidigt som TIP41C är påslagen? :?
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Inlägg av Swech »

hur har du kopplat in Tip41?
Funkar det som tänkt utan Tip?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> När jag sätter en diod på pinnen.

Lysdiod ? Med eller utan motstånd ?

> Drar den [TIP41C] så mkt ström.....

Varför fråga oss ? Det är du som har kopplingen, mät själv !
Vi vet ju inte ens hur du matar prylarna! Eller hur det
hela är kopplat.

Du gör det inte speciellt lätt att hjälpa till med
dina dåliga beskrivningar av vad du gör, men
det är ju ditt problem... :-) :-)
Användarvisningsbild
Patrick
Inlägg: 376
Blev medlem: 9 december 2007, 19:13:01
Ort: Uppsala
Kontakt:

Inlägg av Patrick »

Just nu via motstånd från pinen på picen!
Användarvisningsbild
Patrick
Inlägg: 376
Blev medlem: 9 december 2007, 19:13:01
Ort: Uppsala
Kontakt:

Inlägg av Patrick »

Swech skrev:hur har du kopplat in Tip41?
Funkar det som tänkt utan Tip?
Via motstånd,det ser iallafall mer ut som det händer något i den stilen som det ska vara utan TIP,arna!
Skriv svar