Fórum témák
» Több friss téma |
Én is ezt hittem addig, amíg egyszer csak tényleg nagyon sok dolgott kellett egyszer kezelnem.
A moduláris programozást sem gondoltam szükségesnek egy ideig...
PIC-el (16F887) szeretném mérni egy akkumulátor töltő/kisütő áramát.
Az addig ok hogy beteszek egy söntöt és analog bemenettel figyelem a söntön eső feszültség nagyságát, de válltozik a feszültség polaritása attól függően, hogy épp töltöm, vagy kisütöm az akkumulátort. Na erre a problémára kéne nekem valami frappáns megoldás!
Szia!
Egy összegző kapcsolással ( műveleti erősítő) toldd el 1/2 Ut-re a sönt feszültségét 0A esetén!
Bogarászom az adatlapot, de nem egyértelmű hogy lehet-e a Vref- negatívabb a VSS-nél?
Erről egy kapcsolási rajzot tudnál mutatni?
A hozzászólás módosítva: Ápr 14, 2021
Bővebben: Link
A 7-es ábra egy összeadót mutat. Ha az egyik bemenete 2,5V, akkor a másik bemenete +/- 2,5V között váltakozása esetén a kimenet 5...0V között változik! Persze lényeges a tápfesz és a műveleti erősítő kivitele (rail to rail vagy sem, de ha elég nagy a táp és szimmetrikus /ill. kettős/, akkor nincs probléma ! )! A hozzászólás módosítva: Ápr 14, 2021
Csak egy 12V-os akkumulátor feszültség (11-14,4V között) és az abból előállított +5V stabil feszültség van.
Rail to rail kimenetes IC-vel még jó lehet, ill. nézz utána a Millman tételnek, az is jó lehet...
Ok! Köszönöm!
Na! Ez egész jónak tűnik!
Csak hogy jól értelmezem-e a dolgot ( pl a 20A-es típusnál, 5V tápfeszültség mellett) : Nem folyik áram akkor a kimenet 2,5V +20A folyik akkor 4,5V a kimenet -20A folyik akkor 0,5V a kimenet?
Sziasztok! Hogyan tudnám megcsinálni, hogy az alprogramokat külön nyomógombbal indítanám, és
amikor a futó alprogram lefut, leállna és vár a következő indításra? Most úgy dolgozik, hogy a gombot megnyomva átlép egy másik alprogramba.
Segítségeteket előre is köszönöm! A hozzászólás módosítva: Ápr 14, 2021
Igen, jól értelmezed. Ha nem folyik áram, akkor a tépfeszültség felére áll be a kimenet. Mivel a Hall elem viszonylag zajos, érdemes egy RC szűrőt tenni a kimenetre. Ha jól értem a feladatot, ez nem fog problémát okozni.
Helo.
16f1615ből kispórolták az eepromot, van helyette high endurance flash terület. Hogyan tudnám feltölteni fordítási időben? Gondolom kéne neki egy psect, meg a linkernek is tudtára kéne adni hogy melyik címre tegye. -Wl,-pPor_Vec=0h,-pIsr_Vec=4h már be van írva, ennek mintájára akár meg is tudnám adni, de mivel 8bites ez a terület 14 helyett retlw ket nem tehetek bele, csakis magát az értékeket, amiket aztán indirekt mód kell majd olvassak. A hozzászólás módosítva: Ápr 15, 2021
A kolléga itt a __EEPROM_DATA() makróra gondol, legalábbis ennek a HEF alternatívájára. Nincs előttem egy XC8 fordító, de nem ismeri fel a megvalósítást és pakolja be ezzel? Egy gyors próbát megér.
Akkor valamit benéztem. Az adatlap 1F80-1FFF területet ír, és hozzá azt hogy "This device has a 128-byte section of high-endurance Program Flash Memory" Akkor elég lehet a retlw és a reset és interrupt vektorok mintájára megadott kezdőcím?
Az kimaradt hogy pic-as assemblyvel próbálkozom.
A HEF a programmemória végén található (0x1F80-0x1FFF ) és csak 8-bites. Az adatok olvasása indirekt eléréssel történik FSR-en kereszül, akár az adatmemória. (doksi 23. oldal)
Az írás viszont csak a PMADRx, PMDATx és PMCONx regisztereken keresztül végezhető el. Valamint olvasható is így. (doksi 120. oldal) Az adatok elhelyezése:
Adatok fix címen:
Köszönöm a választ. Holnap kipróbálom. A PSECT data miatt nem fogja azt hinni hogy az adatmemóriába kell tenni mint változó, tudni fogja hogy én konstansokat akarok a programmemóriába pakolni?
A hozzászólás módosítva: Ápr 15, 2021
Helyesbítenék:
Azt hiszem Hp41C-nek mégiscsak igaza van. Úgy tűnik hogy az a terület is teljes értékű programmemóriaként használható, viszont az ottani memóriacellák alsó byte-ja sokkal strapabíróbb. (Ez a HEF.) Tehát a RETLW megoldás is használható, de ha EEPROM-ként akarjuk használni, akkor érdemes csak az alsó byte-ot használni. (A fentebb leírt módon.)
Nem fogja összekeverni az adatmemóriával , mert az így foglalható:
(Az nem data, hanem udata, vagyis az inicializálatlan adatok területe.)
A pic16f1615.inc állomány végén található definíciók:
Igen, én kevertem össze. Köszönöm, így már minden tiszta.
A hozzászólás módosítva: Ápr 15, 2021
Sziasztok!
Ránéznétek erre a kapcsolási rajzra? Szeretnénk megvalósítani, de nagy munka kikábelezni, ezért szeretném előre lecsekkoltatni. Ez 3 ajtó vezérlése. Egyszerre csak egy ajtó lehet nyitva. A programot megírtam, jól működik. Az ajtók nyitottságát egy reed-relé adja (PARAMC-10F W). Az ajtókat zárva tartó mágnes EMAGKIT-ZOA-180. (24 VDC; 180 mA). A működtető relék: G6B-1114 (5V). A bemeneteket földre húzom 100k-val. A tiltókapcsolók a reteszelést törlik. Természetesen a PIC minden VDD és VCC pontját bekötöm, az MCLR pontját +5V-ra kötöm. Amire kíváncsi volnék: - Probléma-e, ha az egyes ajtók a PIC-től kb. 25 m-re vannak? (Tehát a mágnesek, reed-relék, relék, LED-ek és a tiltókapcsolók is.) - Tudok-e így 24 VAC-ból stabil +5 V-t csinálni a rajzolt módon. - Az 1N4004 megfelelő-e ide? - Kihagyhatom-e a kimeneteknél a tranzisztorokat (ahogy rajzoltam is)? - Ha a mágnes behúz, akkor a piros LED kigyullad. Hogy oldható meg az, hogy egyébként meg egy zöld LED világítson? (Ha az a kimenet nem aktív.) Köszönöm szépen!
Minden rosszindulat nélkül: inkább rajzoltasd meg valakivel.
Teljesség igénye nélkül: - PIC-nek a táp lábait nem tartalmazza a rajz - MCLR-t ellenállással szokták tápra kötni, tesznek mellé 100nF kerámia kondit is - 100nF kerámia kondit tesznek a PIC mellé a táp lábakra is - relét nem a mikrokontroller lába hajtja, direktben, hanem tesznek közé pl. egy kapcsoló tranzisztort. - A 25m távolsághoz nem árt vm. korrekt áramköri megoldás, pl. áramhurok, optikai leválasztás, stb. - A 7805 adatlapját érdemes lenne megnézni, hogy mennyi kapacitást javasolnak a lábaira. Biztos lehet még találni. Hirtelen ennyi jött.
...az AC-t először egyenirányítani kéne pl. graetz híddal, utána plusz kerámia kondi,,, a stabilizátor után már nem kell elektrolyt.
Ha 24V AC-t egyenirányitasz, abból lesz kb. 32V DC, ugyhogy az 5V stabilizátorodnak becsületes hűtés fog kelleni, számolva minimum a relék tekercseinek áramával. A PIC kimenetei max. 25mA-t bírnak, az általad írt relé 5V-nál 40mA. A lehúzó ellenállások legyenek 5-10kohm Zöld LED úgy világíthatna, ha az RB0, RB1, RB2 és az 5V közé kötöd. pl. 5V anód, RB0 katód - persze soros ellenállással. Ami pedig a hosszú vezetéket illeti ... Ezzel biztos menne akár 50m-ig is.
uC portjait nem lógatjuk ki több 10 - 100 méteres drótokra.
Azok antennaként összeszednek mindenféle zajt, túlfeszültség tüskéket és bizonytalanná válik a port bemenei állapota vagy átütnek a félvezető rétegek. OPTOcsatolós leválasztás kimenet és bemenetek felé. A hozzászólás módosítva: Máj 4, 2021
Ha már ott van a 24V, akkor nyugodtan használhatsz 24V reléket, természetesen tranzisztorokon keresztül. Ráadásul így a PIC tápját nem zavarja annyira a relék működése.
Módosítási javaslatok:
- Greatz egyenirányító (DB102), puffer kondenzátor (~ 1000µF/63V), DC/DC konverter, szűrőkondenzátor. - Írtad a PIC táp és föld lábának bekötését. Közvetlenül a táp lábakhoz (dip tok esetén pl. a fólis oldalon SMD kiviletű) 100nF .. 1µF kerámia kondenzátor. - MCLR lábhoz elég egy felhúzó ellenállás, de ne legyen 4k7 -nél nagyobb, nem kell kondenzátor. A konfigurációban engedélyezni kell a power on timer funkciót. - Egy láb a 16F716 -on max 25 mA -t képes leadni, de ekkor már a visszaolvasott érték nem az lesz, amit kiírtál. A tok összes áram a a föld/táp felé max. 200mA lehet. - A békesség kedvéért a reléket egy-egy tranzisztorral kapcsolnám. (Könnyebb a tranzisztor cserélni, mint a PIC -et). - Zöld LED -et a kimenet és a +5V táp között lehetne elhelyezni előtét ellenállással. - 20m nem lehet akadály a vezérlésnél. A relék működhetnek (a tranzisztor típusától függően) akár a 24V DC -ről is. - A bemeneteken a relék helyett lehetne optocsatoló is. - Az ajtómágnesekhez is kellene egy-egy dióda. |
Bejelentkezés
Hirdetés |