dsPic blijft resetten bij starten bldc driver

Hi,

Ik ben bezig met een projectje waarbij ik mbv een dsPIC33FJ128MC706A een bldc driver aanstuur.De driver is opgebouwd mbv 3 x de IR2184S met bijbehorende componenten.

Op de PCB heb ik een 15V,5V en 3,3V. Het geheel wordt gevoed vanuit een 36V accu. BLDC motor is 250W sensored.
De 15V krijg ik uit een LM2596HV, de 5 en 3,3V uit een spanningsregelaar achter de 15V.

Er zit wat I/O, een display SSD1306 op en werkt naar behorende. Tevens nog 2 motor drivers (IFX9201) welke ook prime werken.
Ofwel alles werkt, Behalve:(

Zodra ik de een kleine setpoint geef op de PDC en een interrupt genereer vanuit de hall sensoren door de motor een setje te geven start deze soms met draaien en draait dan prima maar meestal reset de pic?

Kortom:
Op het moment dat er een interrupt gegenereerd wordt (IFS0bits_IC2IF 3 en 4 in mijn geval) en het OVDCON register wordt gestuurd reset de pic. Dit resetten gebeurt niet als de 15V er af is.

vb van 1 van de hall interrupts.

pic basic code:


Isr IC3Interrupt 'Hall B
'    Inc HallACntr
    IFS2bits_IC3IF = 0                                                          'Clear interrupt flag
    HallValue = (PORTD >> 9) & 0x0007                                           'Read halls 
    If Forward = 1 Then
        OVDCONREG1 = CRead (FwdStateTable + HallValue)        
        OVDCON.8    = OVDCONREG1.0
        OVDCON.9    = OVDCONREG1.1
        OVDCON.10   = OVDCONREG1.2
        OVDCON.11   = OVDCONREG1.3
        OVDCON.12   = OVDCONREG1.4
        OVDCON.13   = OVDCONREG1.5    
    Else
        OVDCONREG1 = CRead (RevStateTable + HallValue)
        OVDCON.8    = OVDCONREG1.0
        OVDCON.9    = OVDCONREG1.1
        OVDCON.10   = OVDCONREG1.2
        OVDCON.11   = OVDCONREG1.3
        OVDCON.12   = OVDCONREG1.4
        OVDCON.13   = OVDCONREG1.5   
    EndIf 


EndIsr

Ik ben de hele dag al aan het zoeken en heb al ontzettend veel geprobeerd om dit verschijnsel te tackelen.
- 15V vanuit lab voeding ipv de lm2596.
- Extra ontkoppelen met 100nF.
- Buffer elco'op de 15V,5V en 3,3V geplaatst.
- Etc etc..

Heeft iemand misschien een idee waar dit zou kunnen liggen?
Zal dit een software of hardware probleem zijn?

Alvast dankt.

Ik weet niet of je een scoopje hebt, maar daar zou ik mee beginnen kijken op de 3.3V-lijn.

Je schrijft dat de pic niet reset als je de 15V niet aangesloten hebt, maar daar haal je toch je 3.3V vanaf dus kan je pic het helemaal niet doen als je geen 15V hebt....

Domoticz en ESP8266, goede combo!!!

Op 30 maart 2017 21:35:00 schreef Roches:
Ik weet niet of je een scoopje hebt, maar daar zou ik mee beginnen kijken op de 3.3V-lijn.

Je schrijft dat de pic niet reset als je de 15V niet aangesloten hebt, maar daar haal je toch je 3.3V vanaf dus kan je pic het helemaal niet doen als je geen 15V hebt....

Jep ik heb een scoop en probeer even de 3.3V lijn weer te geven.
Ik heb met een externe labvoeding de 3.3V op de pcb gevoed terwijl de 15V en 5V uit de Lm2596 en lm317 kwamen (gnd aan elkaar geknoopt). Hiermee dacht ik uit te kunnen sluiten of het aan de voeding ligt. Toch?

Oh, nog iets.... Ik heb al bijna 20 jaar niet meer met PICs gewerkt, maar toen zat er een pullup in de chip voor de reset lijn. In omgevingen met wat elektrische troep (in jou geval dus) is die niet sterk genoeg om de reset lijn hoog te houden... Heb je een externe pullup op de reset?

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Op 31 maart 2017 10:43:40 schreef rew:
Oh, nog iets.... Ik heb al bijna 20 jaar niet meer met PICs gewerkt, maar toen zat er een pullup in de chip voor de reset lijn. In omgevingen met wat elektrische troep (in jou geval dus) is die niet sterk genoeg om de reset lijn hoog te houden... Heb je een externe pullup op de reset?

Ja. ik heb een 10k op de mclr met een 100nF naar gnd.

Mijn vermoeden gaat uit naar het inzakken van de 3,3V voeding waardoor de pic gereset wordt.

Domoticz en ESP8266, goede combo!!!
Lambiek

Special Member

Waar heb je BOR op staan, welke waarde dus?

Als je haar maar goed zit, GROETEN LAMBIEK.

Geen idee of hij hier op zit, maar in het verleden flink liggen stoeien met de MCLR aansluiting. Het effect was iets van: zolang ik op de bank blijf zitten werkt het, maar zodra ik met mijn vinger te ver in de buurt van de PIC kwam gebeurden de meest wild vreemde zaken. Heeft even geduurd eer ik er achter was wat het probleem was.

Wie de vraag stelt, zal met het antwoord moeten leren leven.

Pullup op de MCLR pin verlaagt naar 2k2. Iets beter resultaat..

Als ik de 3,3V lijn meet met de scoop heb ik in rust een Vpp van 120mV en wanneer de motor draait 420mV. Dit lijkt mij nog al veel?
ik zal eens een plaatje schieten...

Klinkt als VEEEEL te lange voedingslijnen en weinig kennis over ontkoppeling en het effect daarvan op een 40 MIPS processor. In de datasheet staat heel duidelijk beschreven hoe een dergelijke processor z'n voeding dient te krijgen. De piekstromen zijn namelijk onwaarschijnlijk hoog en alleen extreem korte stroompaden helpen daartegen. Ontkoppelen op niet meer dan 5 mm van elk van de voedingspinnen, eventueel op verschillende punten extra bufferen met een tantaal of multilayer van 10 uF, dat soort dingen.

Mijn echte naam: Joris | Mijn elektronica website: Fuzzcraft.com

Helaas nog niet verder gekomen...
@Lambiek de BOR kan ik niet configureren.
@Shiptronic. Ja die zit er zeker op. Uit zetten gaat volgens mij niet maar heb hem nu via 2k2 naar de 3.3V zitten.
@Fuzzbass. Idd hier nog weinig kennis van juist ontkoppelen. Ik heb de datasheet gehanteerd voor het maken van de schakeling... Ik heb eerder een bordje gemaakt met dezelfde dsPic en BLDC driver erop zonder enige problemen... Wat is er nu anders dan. een hoop i/o veranderingen en voornamelijk de voeding. En dan natuurlijk de board layout. Hier heb ik niet veel ervaring mee..
Hier het schema van de dsPic op het bordje, De top en bottom layout.
Ik ga ieg de 3,3V aanpassen en wellicht nog even wat tvs diodes plaatsen om te kijken of ik zo eventule spikes kan afvangen.Ik dacht de TVS diodes op de voedingslijnen te plaatsen en op de Vcap en MCLR ingang.

https://www.uploadarchief.net/files/download/dspic%20schematic.png
https://www.uploadarchief.net/files/download/board%20bottomplayer.png
https://www.uploadarchief.net/files/download/board%20toplayer.png

Schema:
Op "vcap" kan je nog een 100nF dicht bij de CPU bijplaatsen.
Layout:
Zorg dat je ground planes beter aan mekaar zitten. En dan bedoel ik de top en bottom layers.

Je layout bevat talloze componenten die niet op het schema staan.
Als ik het goed begrijp, heb je een zwik dikke elcos bij iedere fase staan. Daar zou ik nog wat keramische ontkoppeling naast zetten.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Op 1 april 2017 18:40:05 schreef rew:
Schema:
Op "vcap" kan je nog een 100nF dicht bij de CPU bijplaatsen.
Layout:
Zorg dat je ground planes beter aan mekaar zitten. En dan bedoel ik de top en bottom layers.

Je layout bevat talloze componenten die niet op het schema staan.
Als ik het goed begrijp, heb je een zwik dikke elcos bij iedere fase staan. Daar zou ik nog wat keramische ontkoppeling naast zetten.

De keramische ontkoppeling ga ik meteen even doen. Zal eens kijken hoe ik met wat extra verbindingen de planes aan elkaar kan knopen.

Ik bedacht me ineens dat ik nog niet naar de ontkoppel C-s in de layout had gekeken. Die blijken op de onderkant te zitten. Ik heb voor mezelf als "design rule" dat ik geen onderdelen doe aan de onderkant. En hoewel het regelmatig gedaan wordt, zijn er voordelen van het aan de bovenkant doen van de ontkoppel C-s. Er zitten namelijk heel vaak gnd en VCC pinnen naast mekaar. Als je de condensator daar goed plaatst, heb je een kort draadje zowel naar de gnd pin als naar de VCC pin. DAT is belangrijk.

Het kan ook wel aan de andere kant. Idealiter heb je dan je VCC net buiten de pin-ring en de GND net er binnen, met direct de VIAs naar de andere kant zeer dicht bij de pin (de ene net binnen de pin-ring, de andere er net buiten).

Als je bij jou gaat kijken dan denk ik dat ik pas bij de through-hole connectoren de verbinding naar het andere ground-vlak vind.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Inderdaad, het pad terug naar de ground van de microcontroller is veel te lang, en bevat waarschijnlijk nog een hele forse lus ook, dus dat is prima geschikt om een boek rommel op te pikken. Ik zet meestal via's bij elke ontkoppel condensator en ground pin, en als het kan maak ik aparte logic en power grounds, die dan maar op 1 plaats aan elkaar zitten.

Verder nog een paar andere opmerkingen: de gate signalen op je toplaag maken en enorme omweg, met ook daar een grote lus. Ik zie niet in hoe je de MOSFETs gaat koelen. Stroom meten is absoluut vereist voor een goede regeling (al kun je bij sommige toepassingen wegkomen zonder).

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Bedankt voor de tips.
Op de genoemde plekken extra verbindingen naar gnd gemaakt. Geen verbetering helaas. Het volgende gebeurt er
Ik heb een programmaatje waarbij ik een vaste setpoint geef voor 5 sec daarna deze 0 maak en weer terug naar start spring na 3 sec.
Als ik de voeding inschakel start de motor met draaien voor 5 sec, stopt en start weer na 3 sec. Prima.
Dit correct starten gebeurt maar een enkele keer. meestal blijft de motor stil staan, reset de pic en zo voort.
Wanneer ik nu mijn vingers op de ingangen van de driver van U1 druk een hoop gegrom, (heb nu even de boel op een labvoeding) voeding begint even te haperen de boel reset en de motor start?

Hier het schema van het driver circuit.
https://www.uploadarchief.net/files/download/driverb.png

Zien jullie iets verkeerds?

Op 1 april 2017 18:22:52 schreef basparky:
@Shiptronic. Ja die zit er zeker op. Uit zetten gaat volgens mij niet maar heb hem nu via 2k2 naar de 3.3V zitten.

Er zit toch hoop ik ook nog een aan vast dicht bij de PIC? En gezien het verlagen al een positief resultaat geeft, lijkt het probleem ergens met ontkoppeling te maken te hebben

Wie de vraag stelt, zal met het antwoord moeten leren leven.

Op 2 april 2017 21:33:45 schreef Shiptronic:
[...]

Er zit toch hoop ik ook nog een aan vast dicht bij de PIC? En gezien het verlagen al een positief resultaat geeft, lijkt het probleem ergens met ontkoppeling te maken te hebben

eeh nee zie schema:https://www.uploadarchief.net/files/download/dspic%20schematic.png

Wachteffe. Die elkos bij de mosfets in de buurt zijn de 4.7uF van de boost condensatoren? Daar doe ik altijd een 0805 220nF condensator. Des noods 1uF. De max spanning op dat ding is 12V nominaal (bij jou 15.5 geloof ik). Dus 25V exemplaren zijn genoeg ook al is je motor spanning hoger.

[edit] OK. Verder in het schema gekeken... Die grote zullen wel die 100uF dingen zijn.

Op 2 april 2017 20:58:14 schreef basparky:

Wanneer ik nu mijn vingers op de ingangen van de driver van U1 druk een hoop gegrom, (heb nu even de boel op een labvoeding) voeding begint even te haperen de boel reset en de motor start?

Wat is U1? Ik kan hem even niet vinden in beiden deelschemas die je gestuurd hebt.

[Bericht gewijzigd door rew op 2 april 2017 23:43:31 (33%)]

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Op 2 april 2017 23:38:27 schreef rew:
Wachteffe. Die elkos bij de mosfets in de buurt zijn de 4.7uF van de boost condensatoren? Daar doe ik altijd een 0805 220nF condensator. Des noods 1uF. De max spanning op dat ding is 12V nominaal (bij jou 15.5 geloof ik). Dus 25V exemplaren zijn genoeg ook al is je motor spanning hoger.

[edit] OK. Verder in het schema gekeken... Die grote zullen wel die 100uF dingen zijn.

[...]Wat is U1? Ik kan hem even niet vinden in beiden deelschemas die je gestuurd hebt.

idd de 4.7uF zijn de boost condensatoren. Deze zal ik eens vervangen voor 1uF (heb ik liggen). Excuus met U1 bedoelde ik fase U ofwel driver IC1.
Kan het zijn dat de gates van de mosfets zweven door opgepikte rommel en ik deze naar gnd moet trekken met ieder 1k ofzo?

Op de VESC is 39k gebruikt.

Maar.... daar kan de CPU de hele driver uitschakelen en dat gebeurt als de CPU in reset is en/of nog niet opgestart. Dan is het van belang dat de gates ontladen zijn en blijven zolang de CPU nog geen geldige stuur signalen geeft.

Jij gebruikt de IR2184. Die heeft een "SD" signaal. Als die bij het opstarten "actief" staat, dan worden de gates niet aangestuurd. Een pulldown op OFWEL alle hoge OFWEL alle lage gates is aan te raden.

En alle SD signalen zou ik ook met een weerstand naar "actief" trekken. Als je SD niet-actief maakt, dan worden de gates aangestuurd met mogelijk willekeurige signalen, en dat kan ook fout gaan. Dan moet je ook nog eens daar pulldown weerstanden op gaan zetten...

Ik weet niet zeker of de in de 2184 ingebouwde 400ns deadtime voor jou setup genoeg is. Ik kan me iets herinneren van dat bij mij iets van 800ns nodig was.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Lambiek

Special Member

Op 3 april 2017 08:31:54 schreef rew:
Jij gebruikt de IR2184. Die heeft een "SD" signaal. Als die bij het opstarten "actief" staat, dan worden de gates niet aangestuurd. Een pulldown op OFWEL alle hoge OFWEL alle lage gates is aan te raden.

Wat versta jij onder actief rew? Hoog of laag?

De "SD_PIN" hangt intern aan een pull up weerstand, die pin hoef je niet echt aan te sturen. Sterker nog, ik gebruik hem nooit.

Als je haar maar goed zit, GROETEN LAMBIEK.

Vandaag weer even verder kunnen gaan met het zoeken naar het (de) probleem(en)... Ik heb de gates van alle 6 de fets via een 33k aan gnd geknoopt en het probleem doet zich niet meer voor sinds. Ik heb heb een test programmaatje draaien waarmee ik nu zo'n 230 keer succesvol het wiel heb kunnen starten en laten draaien voor 10 sec. zonder dat de processor gereset wordt. Dit had ik niet verwacht:)

Ik heb de VESC eens bekeken en vind het gebruik maken van de DRV8302 wel mooi ipv 3 x de ir2184S + randcomponenten... Prijstechnisch ook wel prima lijkt mij. Wat is jullie mening hierover?

[Bericht gewijzigd door basparky op 5 april 2017 20:02:51 (19%)]

Doet het prima zolang je maar VER bij de 60V vandaan blijft. En dan nog gaat ie regelmatig onverklaarbaar stuk. Mij niet gezien.... :-)

Ik heb een eigen verse (software compatible) en die heeft juist losse opamps, losse drivers en een losse stepdown. (ipv de lineaire regelaar die 12V maakt in de DRV!).

Let op: bij 20kHz schakelen van zes IRFS7530 mosfets gebruik je zo'n 30mA aan gemiddelde stroom op de 12V. Da's precies het maximum van de DRV chip. Dan stookt ie dus 1.5W aan vermogen op voor de lineaire regelaar.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/