Elektrinis dviratis: PWM kontroleris

Taigis, kiek parašysiu kaip padarytas PWM kontroleris. Jis buvo kuriamas su kaikokiom įdėjom, bet tos įdėjos nebuvo realizuotos arba nebuvo reikalingos vėliau. Pirma mintis buvo, kad sistema bus skirta 24V sistemai, vėliau ji buvo naudojama 12V sistemoje, dabar Liion 4 celės. Buvo sugalvota analoginė per didelės srovės atkirta (šuntas, įtampos nuėmimas ir komparatorius), bet vėliau to buvo atsisakyta. Ir ta schemos dalis perdaryta į filtra ir buferį.

dviracio kontrolerio schema PWM
Schema kurią radau kompe. Ji kiek skiriasi nuo galutinės versijos. Pradžioje buvo dviejų pakopų stabilizatorius (IC2-IC3)+IC1. Mintis buvo tokia, kad borto 24V numušami iki 15V ir ši įtampa naudojama MOSFET draiveriui. Pakeliui, 15V mažinama iki 5V kuri skirta mikroprocesoriui (TINY138) ir “gazo pedalui”. Išėjimo mikroschema LM358 buvo maitinama iš 15V.
Po eksperimentų ir perdegimų liko tik 7805.

Veikimas toks- įtampa iš akumuliatoriaus, per dioda D1 (400V, 3A) eina į droselį L1. Neteisingos įtampos spaikai suvalgomi transilo D2 (kažkoks ~52V). Čia stovi elektrolitai ir pajungtas 7805 stabilizatorius bei LM358.
Iš 7805 penki voltai užglaistomi kelių elektrolitų patenka į MCU ir į “gazo” jungtį. Pradžioje ten stovėjo rezistorinis daliklis, dabar kiniškas holo variantas. Signalas per filtrą C2 ir R1, bei apsaugą D3 patenka į MCU.
MCU generuoja PWM signalą kuris per filtrą R6C patenka į LM358 buferį. Nes pernelyg “aštrus” signalas iš MCU kėlė problemas tolimesnėse grandinėse. R7 patempia signalą žemyn tada kai MCU dar nepasiruošęs darbui. Dabar signalas “be aukštų” eina į kitą plokštelę kuri išpjauta iš pramoninio įrenginio. Ten stovi UC3710T tikriausiai pagal tipinę schemą, įėjimo signalas irgi turi savo R daliklį, stovi keli kondensatoriai, diodas ir gana didelis transilas.
Signalas iš draiverio išsiskirsto į keturius mosfetus, kiekvieno mosfeto gate turi savo kelių omų buferį ir kelių kiloomų pull-down.

Programinė įranga “hard coded” konkrečiam holo davikliui. Nes holo daviklio dinaminis diapazonas gana mažas. Programinėje įrangoje numatytas “išėjimo kreivės” panaudojimas. Dabar kreivė naudoja linijinį dėsnį.
Dar kelios subtilybės- nėra visiškai mažų ir didelių PWM reikšmių. Per mažos reikšmės nepasuka motoro, tik cypia. O per dideliose nėra jaučiamo skirtumo. Todėl prie maksimalio reikšmės PWM išjungiamas ir MOSFETai atidaromi iki galo.

Source code ir sukompiliuoti failai: DC motoro variklio kontroleris.

10 replies on “Elektrinis dviratis: PWM kontroleris”

  1. gal porą žodžių kaip braižomos tokios schemos, turiu galvoje ne pačią braižymo techniką, bet sukuriamas teisingas projektas? kažkaip po gabaliuką, ar visas iš karto gimsta in your brain? (tik perkeliamas iš ten ant
    lapo ar tai į kompo programą) 🙂 pats biškį moku projektuoti namus, bet man čia vistiek beveik tamsus miškas, nors ir aprašyta 😉 pvz. jei būtų srovės šuntas, tai kurioje vietoje jis turėtų atsirast, pagal tipinius
    sprendinius ar kaip?

  2. Mintyse schema skirstoma į modulius: maitinimo šaltinis, analoginė dalis, procesorius ir jo programavimas, apsaugos. Tie moduliai dažnai pereina į PCB zonas.

    Apsaugos dažniausiai susijusios jau būna su maitinimu ir su analogine dalim.

    Kartasi būna ant popieriaus kokie nors eskizai, kartais dalis schemos skolinamasi ir interneto ar senesnio projekto. Tiesa dažniausiai jokių mechaniniu kopypaste, o jungiami laideliai galvojant apie jų paskirtį.

    Kai schemos sudėtingesnės, būna klaidos ir tada atsiranda schemų revizijos.

    Dabar apie srovės šunto klausimus- schemos būna principinės (tai tas kas čia ant balto fono), o kai keliauja į fizinį pavidalą (PCB), tai čia jau iškarto kitoks mąstymas ir čia jau šuntas turi stovėti prie srovės gnybtų, takeliai stori ir trumpi. Jei srovės per šunta impulsinės, tai reikia šalia ekranuoti ir mažasroves jautras dalis patraukti į šoną (principinėje schemoje dzin- ten paišoma, kad suprasti veikimo principą). Čia jau prasideda menas ir galvosukis vienam objekte- kaip sudėlioti takelius, kad jie nesusipainiotu ir gautusi kiek galima mažiau via ir kad nesigautu kalno takelių lindimas per siaurą tarpą.

  3. Gal ir sprogs. O gal ir ne. Kiekviena schema skirta tam tikrai užduočiai. Ši schema neskirta “galingesniam” motorui 🙂
    Tai 12V DC motoras iš hidraulinio siurblio. Jis lengvai nesprogsta. Nu o jei užsitrumpins, tai turi suveikti saugikliai. Jei mechaniškai užsikabins, tai kogero nutrauks grandine ar nusuks ašį. Reduktorius gana stipriai padarytas.

    hidrauline pompa
    Va kaip atrodo motoro donoras. Jis tiesiogiai per rėlę jungiasi prie akumų. Jokiu “smart protection” nėra.

  4. Vienas dalykas kai variklis stovi siurblyje, o kitas kai variklis suka dviračio ratą. Kol variklis nesisuka, jo varža lygi šepetėlių ir apvijų varžai, kuri gali būti labai žema. Nėra dviratinių kontrolerių be srovės ribojimo.

  5. Taigi labai gerai kad nėra tokių kontrolerių. Viena bėda, kad esamas kontroleris veikia ir eksploatuojamas kiekvieną dieną. Ir nedega…

    O dėl “Kol variklis nesisuka, jo varža lygi šepetėlių ir apvijų varžai…” skamba kaip kažkoks užkeikimas. Rekomenduočiau biški paskaityti praeito amžiaus knygutę apie elektros mašinas. Apie tas mašinas, kurios dar iki elektronikos amžiaus buvo sukurtos.

    … siurblyje tipo jis visada sukasi…

  6. Levai, šioj vietoj geriau patikėt, kas sakoma. 🙂 Siurblys dažniausiai startuoja beveik be apkrovos, o dviratis – su maksimalia apkrova, beveik visada. Mėgėjai šią klaidą daro labai dažnai, pvz. į dviratį sumontuoja “100A” RC modelio valdiklį, o po savaitės įkelia nuotraukyčių…
    Šiuo konkrečiu atveju tik laimingo atsitiktinumo dėka visos grandinės varža yra pakankamai didelė, kad motorui nesisukant srovė neviršija kritinės (ar viršija nepakankamai ilgai).
    Visose transporto priemonėse traukos motoro srovė yra ribojama (PWM) cycle-by-cycle principu (tikru ar emuliuotu), kad net davus pilnai gazo ir esant pilnai apkrovai motoro srovė neviršytų tam tikros ribos. Rimtesnėse sistemose apskritai gazo rankena reguliuoja motoro srovę, o ne įtampa (PWM plotį), nes tik taip gaunamas ergonomiškas atsakas.
    Kitas dalykas, kodėl srovės ribojimo nebuvimas yra pavojingas – galima įsotinti motoro šerdį, o tada jo induktyvumas krenta drastiškai ir nebesuintegruoja PWM. Šiuo atveju tai negalioja, nes matomai motoro varža tiesiog yra labai didelė, bet su kitu motoru gali ir toks fokusas išlįst.
    Knygas mes skaitom.. 🙂

    Šiaip nieko nesakau, pradžia tikrai gera ir šiuo atveju veikia (mačiau gyvai) ir tikrai geriau, nei tikėjausi iš nuotraukų. Kaip sakoma, tobulėjimui ribų nėra.

  7. ““100A” RC modelio” – deja, nemačiau nei vieno kiniško aparato, ant kurio galėčiau uždėti 100A anspaudą. Aš kaip senas svarščikas žinau, kad 100A tai net per didelė srovė virinimui 🙂

    Šiaip, buvo numatyta grandinė srovės matavimui, bet vėliau jos atsisakyta pamačius esamą hardwarę.

  8. Įsiterpsiu, kad stengiuos niekada nesudaryti perkrovos motorui
    (ir mechanikai, elektronikai), tą užtikrina ir tai kad mechanika
    taip padaryta, kad būtina pirma minti pedalus, paskui duoti gazo.
    Buvo planas pabaigoje padaryti ‘freewheel’a ant pedalų ašies (kad
    vežtų motoras neminant), bet dėl didesnio patikimumo, nemanau kad darysim. Nes tenkina toks veikimas kad reikia minti (kai veikia motoras), neminti galima numetus gazą (labai gerai kad numeta iki visiško 0 rpm).
    Įpratau ir neduoti pilno gazo staiga, ir kai nebūtina maksimali trauka,
    duoti tik 70-90% gazo, bei daugiau naudoti pavaras. Motoras tada kaista
    kur kas mažiau. Levo puslapyje dviračio nuotraukos dar be motoro aušintuvo, kuris yra padarytas, nedaug (kadangi aušina iš korpuso išorės), bet manau šiek tiek padeda greičiau ataušti, ypač riedant, nes apipučiamas iš priekio.

Leave a Reply

Your email address will not be published. Required fields are marked *