Skocz do zawartości


Zdjęcie

Prosty ESC DC wlasnej roboty do minimodeli


  • Zaloguj się, aby dodać odpowiedź
16 odpowiedzi w tym temacie

#1 ssuchy

ssuchy
  • Modelarz
  • 771 postów
  • Age: 62
  • SkądLublin
  • Imię:Jerzy

Napisano 14 październik 2017 - 18:32

Źródło (rcgroups, autor z Korei Południowej: Jjifar) i moje dotychczasowe wypociny.

 

Schemat - oryginał:

 

DC_esc.jpg

 

... i poprawiony przeze mnie, bo autor projektu nie dysponował w bibliotece Eagla z 2015 obudową SOT23-6 dla tiny10 - dorobiłem taką obudowę do biblioteki Eagla, bo w mojej darmowej wersja 8.0.coś..., też jej tam nie było (Ciekawe, czy jest w najnowszej? [edit] NIE ma! Niżej dodałem plik uzupełniający bibliotekę):

 

simple_micro_ESC_V1.png

 

 

Jest to pierwsza wersja V1 regulatora do współpracy z odbiornikiem PG1 V1 , który to odbiornik ma niezależne od akumulatora silnika dodatkowe zasilanie (generalnie dla mikrusów z silnikami zasilanymi 1S, więc regulator w tej wersji nie ma wbudowanego BECa).

 

W projekcie wykorzystany jest najmniejszy mikrokontroler AVR Atmela: ATTiny10 - to ten "mały robaczek" o sześciu nóżkach widoczny poniżej na fotce (mniejszy od łepka zapałki):

 

esc-tiny10-01a.jpg

 

... jeszcze możliwy do polutowania przez mój "sprzęt" :P . Regulator może być malutki - wielkość płytki limitują tylko tranzystory prądowe dla silnika.

 

Jako PCB wykorzystałem gotowca (nie trzeba będzie nic trawić) w postaci adaptera DIP8 na SSOP8/MSOP8 (na fotach widać również tranzystory NMOSFET IRLML6244 i IRLR6225, które testuję jako wzmacniacze prądowe do silnika, bo mogą się jeszcze zmieścić na tak małej płytce o wymiarach: 11mm x 10mm, a mają całkiem niezłe parametry):

 

irlml6244-pcb-esc.jpg

 

irlr6225-pcb-ESC.jpg

 

To PCB jest idealne do polutowania Tiny10 w SOP23-6, który ma zasilanie na nogach "środkowych" (2-GND, 5-VCC). Pasuje idealnie, przy czym środkowe dwie ścieżki (po obu stronach obudowy) zwieramy i dostajemy po dwa pady do zalutowania kabelków VCC i GND, co jest przydatne w konstrukcji regulatora. B)  Widać to na poniższej fotce:

 

esc-tiny10-01.jpg

 

... jak widać płytka regulatora jest mniejsza od jednego grosza, a więc chyba całkiem nie najgorszy rezultat jak na ręczną dłubankę lutownicą transformatorową.  :P  :)

 

... i tymczasowo dolutowany tranzystor IRLR6225 do pierwszych testów z silnikiem:

 

esc-tiny10-02.jpg

 

Docelowo tranzystory będą dolutowane na płasko pod spodem płytki z przekładką z cienkiego tekstolitu i kawalkiem doklejonej folii miedzianej, jako dodatkowym radiatorem.

 

Wszystkie elementy (łącznie z kabelkami i złączkami) ważą 1,72g:

 

esc-tiny10-w-elements.jpg

 

Zasada działania to klasyczna regulacja współczynnikiem wypełnienia. Przebieg PWM z procka bardzo ładnie można podejrzeć na oscyloskopie:

 

esc-tiny10-pwm0.jpg

esc-tiny10-pwm1.jpg

ESC-tiny10-pwm2.jpg

esc-tiny10-pwm3.jpg

esc-tiny10-pwm4.jpg

 

FILM-regulacja PWM

 

...częstotliwość PWM ok. 2kHz, a współczynnik wypełnienia regulowany praktycznie od 0 do 100%, więc regulacja obrotów motorków jest realizowana w bardzo szerokim zakresie (można ustawić tak min., że widać obracające się śmigło - patrz poniżej drugi film).

 

No i filmiki z pierwszych testów z silnikami (regulator podłączony do odbiornika PG1 V1 ).

 

Stanowisko testowe z małym mikrosilnkiem (7x20):

 

esc-tiny10-03.jpg

 

 FILM z testu nr1 na YT.

 

... i test z drugim, trochę większym motorkiem (powinien dostać zasilanie 2S, ale nie chciałem, żeby mi zdmuchnął graciarnię z warsztatu ;) , więc miał tylko 1S LiPo):

 

esc-tiny10-04.jpg

 

FILM z testu nr2 na YT


  • 2

#2 ssuchy

ssuchy
  • Modelarz
  • 771 postów
  • Age: 62
  • SkądLublin
  • Imię:Jerzy

Napisano 16 październik 2017 - 19:56

Ponieważ w nowej wersji Eagla (8.3.2) w bibliotece atmel.lbr nadal brakuje obudowy SOT23-6 dla ATTiny10, załączam plik dla zainteresowanych:

 

Załączony plik  ATTiny10_js.zip   2,29 KB   32 Ilość pobrań

 

... wystarczy plik rozpakować i wrzucić do katalogu lbr w Eagle, aby móc rysować schematy i projektować płytki dla tego małego "robaczka" Atmela.


  • 1

#3 bluuu

bluuu
  • Modelarz
  • 242 postów
  • Age: 37
  • SkądW-wa
  • Imię:Adam

Napisano 16 październik 2017 - 20:13

:) fajnie, że też używasz 10'tki :) to maleństwo w wielu rzeczach jest przydatne :)


  • 0

#4 ssuchy

ssuchy
  • Modelarz
  • 771 postów
  • Age: 62
  • SkądLublin
  • Imię:Jerzy

Napisano 13 styczeń 2018 - 12:29

Ciąg dalszy. Wygospodarowałem trochę czasu, żeby skończyć ESC. Po niedzieli pojedzie do Andrzeja (rajaner) do testów terenowych w modelu M-33.

 

W tej wersji, zastosuję tranzystor IRLR6225. Jest to jeden z lepszych tranzystorów polowych, dostepnych  na rynku. Rezystancja drenu załączonego tranzystora przy Ugs=2,5V (regulator ma być przewidziany od zasilania 1S) wynosi tylko 4-5 miliomów. Jednakże przy prądzie obciążenia np. max: 15A w strukturze półprzewodnika wydzieli się ponad 1W mocy, co może już niepotrzebnie nagrzewać obudowę, szczególnie jak ciepło będzie się kumulować na "gołej" obudowie tranzystora bez dołączonego radiatora, na dodatek zabudowanego w termokurczce. Więc aby poprawić warunki odprowadzania ciepła, zamierzam zastosować niewielki radiatorek w postaci blaszki mosiężnej, zgiętej w harmonijkę (wystawionej na zewnątrz termokurczki-obudowy ESC):

 

esc-tiny10-07.jpg

 

esc-tiny10-06.jpg


  • 0

#5 TomTech

TomTech
  • Modelarz
  • 33 postów
  • Age: 40
  • SkądPoznań
  • Imię:Tomek

Napisano 13 styczeń 2018 - 18:33

Witam mam pytanko czym programujesz te maleństwo?


  • 0

#6 jarek996

jarek996
  • Modelarz
  • 467 postów
  • Age: 52
  • SkądMalmö
  • Imię:Jarek

Napisano 13 styczeń 2018 - 18:36

Pelen podziw !   

Mnie elektronika jest obca  jak jezyk baskijski .....

Pamietam , ze jako dzieciak czesto stalem i gapilem przez szybe servisu RTV ( sa jeszcze takie ? ) jak panowie naprawiali radia i TV :-) 

Pozniej , po lekturze ABC MINIATUROWEGO LOTNICTWA zaczalem nawet zbierac komponenty do budowy aparatury , nie majac o tym zielonego pojecia ( zreszta nie mam do dzisiaj )  :-))))  Na szczescie pomysl poszedl w zapomnienie i zostalem wtedy przy uwieziowkach .


  • 0

#7 ssuchy

ssuchy
  • Modelarz
  • 771 postów
  • Age: 62
  • SkądLublin
  • Imię:Jerzy

Napisano 13 styczeń 2018 - 19:10

Tomek, używam klona USBASP f-my ATNEL o nazwie ATB-USBASP z dedykowanym oprogramowaniem: MkAvrCalc (nakładka na avrdude). Programator ten ma zarówno szynę ISP (dla typowych AVRów), jak i szynę TPI dla tych maluszków f-my Atmel:

 

atnel-atb-usbasp1.jpg

 

Dorobiłem sobie do niego płytkę z podstawkami DIP i adapterami (stykowymi na klipsa) do obudów SOP8 i SOT23-6, tak żeby dało się programować również "gołe" mikrokontrolery:

 

atnel-atb-usbasp2.jpg


  • 0

#8 TomTech

TomTech
  • Modelarz
  • 33 postów
  • Age: 40
  • SkądPoznań
  • Imię:Tomek

Napisano 13 styczeń 2018 - 19:57

A czy dało by się program przerobić pod attiny13?


  • 0

#9 ssuchy

ssuchy
  • Modelarz
  • 771 postów
  • Age: 62
  • SkądLublin
  • Imię:Jerzy

Napisano 13 styczeń 2018 - 20:26

Źródło w assemblerze jest dostępne, jednak koder (czytaj programista) ze mnie marny  :rolleyes:  . Żeby zrobić prostą konwersję (bez skomplikowanych zmian, czy pisania praktycznie od nowa programu) trzeba w pierwszej kolejności porównać w obu zasoby/instrukcje/rejestry SFR, na co rzecz jasna nie mam całkowicie czasu. Przykładowo ATTiny10 ma 56 instrukcji, a ATTiny13a 120, ale za to ATTiny10 (jako nowszy mikrokontroler) ma 16 bitowy timer/counter, a ATTiny13 tylko 8-bitowy. Nie twierdzę, że się nie da, ale czas, czas, czas. :huh: Tomek, spróbuj zrobić dogłębną analizę obu (lookając również na źródło i użyte w nim instrukcje), ewentualnie zagadnij na "elce".


  • 0

#10 TomTech

TomTech
  • Modelarz
  • 33 postów
  • Age: 40
  • SkądPoznań
  • Imię:Tomek

Napisano 13 styczeń 2018 - 21:18

Zaprogramować procesor to umiem ale pisanie, przerabianie albo kompilowanie to już magia. Mi taka miniaturyzacja nie jest potrzebna. Szkoda że nie jest 2 kierunkowy. A  może masz jakieś projekty 2 kierunkowych najlepiej na atmelkach. Kiedyś widziałem gdzieś w sieci na attiny13 2 kierunkowy ale nie było wsadu ani kodu.


  • 0

#11 ssuchy

ssuchy
  • Modelarz
  • 771 postów
  • Age: 62
  • SkądLublin
  • Imię:Jerzy

Napisano 13 styczeń 2018 - 23:45

Tomek, TUTAJ masz kompletny projekt ESC DC rewersyjnego 15/30A 2-3S na ATMega8. Poszperaj również: TUTAJ.

 

Wracając jednak do meritum. Poniżej fotki zmontowanego ESC (dla Andrzeja) przed zagrzaniem w termokurczkę i ukształtowaniem radiatora.

 

Strona PCB z mikrokontrolerem:

 

esc-tiny10-08.jpg

 

Strona PCB z tranzystorem prądowym:

 

esc-tiny10-09.jpg

 

Moneta 1 grosz jako skala odniesienia. Jak widać płytka ESC jest niewiele większa od typowego złącza do standardowego odbiornika (żeńskie 3-pin gold, raster 2,54mm). :P Taka gotowa, uniwersalna płytka (do kupienia za 1 PLN na alledrogo) adaptera DIP8 na SO8/SOP8/SSOP8/MSOP8 jest idealna dla opisywanego tutaj ESC:

 

pcb3-esc.JPEG

 

pcb4-esc.jpg

 

... bo, jak już wspominałem, nie trzeba bawić się w robienie od zera PCB - mamy gotowca.

 

Strona płytki do zalutowania mikrokontrolera ATTiny10 z kondensatorami:

 

pcb1-esc.jpeg

 

Strona płytki do zalutowania (na podkładce izolacyjnej) tranzystora IRLR6225 w obudowie DPAK (mieści się idealnie) z opornikiem "uziemiającym" bramkę tranzystora:

 

pcb2-esc.JPEG


  • 0

#12 TomTech

TomTech
  • Modelarz
  • 33 postów
  • Age: 40
  • SkądPoznań
  • Imię:Tomek

Napisano 14 styczeń 2018 - 01:27

Dziękuje ten z atmega8 ciekawy. A mam jeszcze jedną prośbę może masz namiary na regler do bezszczotki z rewersem (znajomy się pytał).


  • 0

#13 ssuchy

ssuchy
  • Modelarz
  • 771 postów
  • Age: 62
  • SkądLublin
  • Imię:Jerzy

Napisano 14 styczeń 2018 - 20:14

Regulator gotowy. Więcej szczegółów niżej.

 

esc-tiny10-10.jpg

 

esc-tiny10-11.jpg

 

esc-tiny10-13.jpg

 

Zagrzany w termokurczkę i łącznie z radiatorkiem, kabelkami i wtyczkami waży: 3,3g. Może nie jest to jakaś rewelacja w miniaturyzacji, ale do minimodeli powinien styknąć.

 

esc-tiny10-12.jpg

 

Zamiast termokurczki do kabli, do "zagrzania obudowy" przydałby się specjalny rękaw z przezroczystego i cieńszego tworzywa termokurczliwego, specjalnie do tego celu dedykowany, ale są one trudne do kupienia u nas w ilościach rozsądnych i właściwych średnicach (na metry). Dotychczas znalazłem tylko w jednym sklepie i co ciekawe, nie elektronicznym, ale modelarskim! Gotowe płytki urządzeń zagrzane w taki specjalizowany rękaw (a nie grubą termokurczkę do kabli) wyglądają elegancko:

 

rekaw.jpg

 

No i ostatnie filmiki z testów warsztatowych, opublikowane na YT. Regulator sprawdzałem z odbiornikiem V1 od aparatury DIY PG1 oraz ze szczotkowym silnikiem eksperymentalnym, który opisałem TUTAJ ("zrób sam" z przekładnią  :)  - podobny do silnika Andrzeja z modelu M-33). Na pierwszym filmiku do odbiornika podpięte są analogowe mikroserwa liniowe, a na drugim większe (5g). Całość, czyli odbiornik, ESC, dwa serwa, motor, zasilana TYLKO z aku. LiPo 1S 300mAh (w ESC nie ma BECa, ani w odbiorniku żadnego innego stabilizatora napięcia). Dla silnika w modelu M-33 nie potrzeba więcej jak 2A. Regulator można spokojnie obciążać 10A, impulsowo znacznie więcej, gdyby nie te cienkie kabelki przy ESC, ale to już miałoby wpływ na "roztycie się" regulatora (przez większe wtyczki i grubsze kable)  ;)  , a jest to przecież ESC do mikrusów z napędem szczotkowym i rad nie rad jakiś kompromis między tyciem a cienkizną trzeba tutaj ustalić. :rolleyes:

 

FILM 1

 

FILM 2

 

I w zasadzie to koniec opisu wersji V1 tego regulatora. Ponieważ regulator jest wyjątkowo prosty, a w związku z tym ma pewne ograniczenia (np. brak BECa, który będzie w wersji V2, jak mi się zechce w to dalej bawić  :P - [edit 02-02-2018]: BEC jest w wersji 4 i 5) dlatego też zrobiłem drobny "myk", żeby zwiększyć jego możliwości (jak poprawię schemat, to zamieszczę). Na zdjęciach widać żółty kabelek-pętelkę. Jest to zworka dla wersji V1a, czyli elektronika RXa i ESC/serwa/motor zasilane tylko z jednego aku. LiPo 1S (tak jak na filmach powyżej - niestety nie wszystkie serwa będą w takiej opcji poprawnie pracowały - trzeba je selekcjonować lub stosować serwa dedykowane dla 1S). Po przecięciu tej pętelki mamy wersję V1b, czyli elektronikę RXa i ESC oraz serwa zasilamy z jednego (mniejszego) aku LiPo 1S (podłączonego do odbiornika), a silnik, który może być wtedy na wyższe napięcie, zasilamy z drugiego (większego) aku. LiPo (1S/2S/3S w zależności od silnika), podłączonego do złącza aku. ESC. Jest to opcja, powiedzmy "bezpieczna" dla modelu w sytuacji kiedy nie mamy w tym prostym ESC kontroli napięcia aku. z funkcją odłączania silnika. W tej wersji lekki maluch po rozładowaniu aku. silnika może nadal być poprawnie sterowany przez operatora i lądować lotem ślizgowym.

 

Jeszcze jedna fotka, tak dla porównania z regulatorem 30A do bezszczotkowców:

 

esc-tiny10-vs-esc30a-bldc.jpg

 

... oraz w otoczeniu przykładowych motorków DC (które będzie obsługiwał) do maluchów-elektryków RC i CL (hybrydowych) - pudełko zapałek jako skala odniesienia:

 

esc-tiny10-motors.jpg

 

... i zmodyfikowany schemat:

 

simple_micro_ESC_V1a-b.png

 

PS Tak chodzi mi po głowie pomysł rozbudowy tego prostego regulatora (dla motorków zasilanych z LiPo 1S i 2S) o BEC oraz kontrolę napięcia aku. i funkcję wyłączania silnika. W tym 6-cio nóżkowym pajączku są jeszcze dwa wolne porty (szczególnie interesujący jest wolny pin3: PB1-ADC1). Wielkiej rozbudowy elektroniki robić nie trzeba, ale konieczne jest pogrzebanie w sofcie. :rolleyes: Są chętni do pomocy? ;)  

 

Aktualnie, pierwszy regulator jest już u Andrzeja (rajaner) i będzie testowany w modelach mini (chyba najpierw w M-33)

[edit: 02-02-2018] Andrzej sprawdził regulator ze swoim osprzętem - działa dobrze. Zainteresowanych odsyłam do tematu o M-33.


  • 0

#14 ssuchy

ssuchy
  • Modelarz
  • 771 postów
  • Age: 62
  • SkądLublin
  • Imię:Jerzy

Napisano 28 styczeń 2018 - 13:37

Noo cóż, chętnych i zainteresowanych do współpracy nie ma. ;) Muszę sam pokombinować.  :rolleyes:  Zajrzałem do źródła (Open Source - program w assemblerze AVR):

 

Załączony plik  DC_esc_ATTiny10.zip   11,79 KB   28 Ilość pobrań - źródło

 

Program zajmuje tylko 164 bajty, a w ATTiny 10 mamy do dyspozycji 1KB Flash, więc możliwości rozbudowy od strony programowej tego projektu ESC są spore. B)

 

Do kontrolowania napięcia z aku. LiPo dla funkcji cut-off dla silnika (w celu zabezpieczenia modelu i nadmiernego rozładowania aku.), najbardziej wskazane jest chyba użycie portu PB1 ATTiny10 (wolny pin3). Co prawda jest jeszcze wolny port PB3 (pin6), ale wykorzystanie go jako I/O, związane z odłączeniem RESET, czyli zablokowaniem mikrokontrolera dla typowych programatorów szeregowych (z szyną TPI), raczej korzystne już nie jest.


  • 0

#15 ssuchy

ssuchy
  • Modelarz
  • 771 postów
  • Age: 62
  • SkądLublin
  • Imię:Jerzy

Napisano 10 luty 2018 - 23:54

Poniżej dwa schematy z funkcją wyłączania silnika w celu zabezpieczania aku. LiPo 1S przed zbyt głębokim rozładowaniem. Po przyjrzeniu się ATtiny10 i kodowi w źródle, narysowałem wstępnie dwa schematy, które mogą ulec jeszcze zmianie!

 

Schemat 1 (wersja wykorzystująca wewnętrzny komparator do kontroli napięcia akumulatora):

simple_micro_ESC_V2a-b.png

 

Wygląda na to, że drastycznie wielkich zmian w sofcie robić nie trzeba będzie.

 

[edit: 11-02-2018] Rewizja Nr1. Zmiana na schemacie, teoretyczna (na razie) - w konwerterze poziomów napięć zastosuję małego mosfeta, zamiast DZ1, bo takich w obudowach SOT-23 mam sporo. Poprawka wprowadzona jest już na schemacie powyżej.

[edit: 27-02-2018] Rewizja Nr2. Zmiana na schemacie powyżej. Zamiast mosfeta z rezystorem w roli konwertera napięcia, można użyć układ logiczny również w małej obudowie SOT23 (jeden bufor) - co da nam jeden rezystor mniej. W roli bufora konwertującego napięcie (Vcc=Aku. LiPo 1S -> 3.3V) wykorzystałem akurat bramkę AND o dwóch wejściach (74LVC1G08DBVR f-my Texas Instruments), bo taką mam. Układy te akceptują na wejściu napięcie do 5,5V przy niższym napięciu zasilania, a więc mogą być wykorzystywana jako konwertery np 5V -> 3V. Zastosuję również nowszej generacji MOSFET  prądowy do silnika o bardzo małej rezystancji włączonego drenu i ciekawej, płaskiej obudowie, co jest dla nas istotne, jeśli chcemy aby regulator był lekki i nieduży.

 

Schemat 2 (wersja wykorzystująca wewnętrzny przetwornik ADC do kontroli napięcia akumulatora):

simple_micro_ESC_V3a-b.png

 

Jak widać druga wersja (V3a-b ) ma mniej elementów w układzie, ale pewnie więcej grzebania w sofcie będzie (coś za coś). No i w tej wersji nie trzeba po zaprogramowaniu blokować szyny ISP mikrokontrolera (wyłączenie RESET), bo pin 6 jest niewykorzystany.


  • 0

#16 ssuchy

ssuchy
  • Modelarz
  • 771 postów
  • Age: 62
  • SkądLublin
  • Imię:Jerzy

Napisano 12 luty 2018 - 23:11

Program napisany w asemblerze AVR jest krótki, tak jak pisałem wcześniej (raptem: sto kilkadziesiąt bajtów po kompilacji), więc wklejam go w całości. Jest to oryginał softu (tak jak ze źródła) dla wersji regulatora V1a-b. - tego, którego prototyp pojechał do testów w modelu M-33 Andrzeja (rajaner). Andrzej wstępnie stwierdził, że regulator działa tak jak powinien z jego osprzętem no i klawo, ale teraz musimy opracować nową wersję regulatora z dodatkową funkcjonalnością, czyli z kontrolę LiPo 1S i wyłączaniem silnika przy zbyt niskim napięciu.

 

W wersji: V1a-b regulatora pin nr 1 ATtiny10 (PB0) pełnił funkcję wejścia dla sygnału PPM z RX-a (kanał regulacji obrotów motorka) w celu zewnętrznego uruchamiania procedury przerwania dla licznika mikrokontrolera (procedura pod adresem symbolicznym: PCI_isr). Jak widać ze schematu nowej wersji: V2a-b taką funkcję będzie teraz pełnił pin nr 6 (PB3). Poniżej tylko wytłuściłem fragmenty oryginalnego kodu, które w związku z tym trzeba będzie poprawić.

 

 

.nolist
.include "tn10def.inc"
.list
.listmac

;================================================
;        define constant
;================================================
.equ    SIGNATURE    = 0xD8


;====================================================
;               define Register
;====================================================
.def    temp        = r16
.def    m_pwm        = r17
.def    s_backup    = r18
.def    NUM2        = r19
.def    pwm_cnt        = r20
.def    tcnt_high    = r21
.def    min_t        = r22


;================================================
;        INTERRUPT VECTORS
;================================================
.CSEG
.ORG $0000
     rjmp     RESET    ; Reset Handle

.ORG PCI0addr
    rjmp    PCI_isr


;================================================
;        PROGRAM START
;================================================
.CSEG
.ORG $0018

RESET:

        ldi     temp, high(RAMEND)      ; Stack Point init'
        out     SPH, temp                                        
 
        ldi     temp, low(RAMEND)
        out     SPL, temp
    rjmp    main


;================================================
PCI_isr:        
;================================================
    in    s_backup, SREG
    push    s_backup

    sbic    pinb, 0
    rjmp    pci_rise

    ;pci_fall
    in    m_pwm, TCNT0L
    in    tcnt_high, TCNT0H

    tst    tcnt_high
    brne    pci_over

    cp    min_t, m_pwm
    brsh    change_min_t

pci_go:
    sub    m_pwm, min_t
    sbrc    m_pwm, 7
    rjmp    pci_over
    
    cpi    m_pwm, 0x02
    brlo    pci_min

pci_ret:
    
    pop    s_backup
    out    SREG, s_backup
    reti
;--------------------------------------------
pci_min:
    clr    m_pwm
    rjmp    pci_ret

pci_over:
    ldi    m_pwm, 0x7F
    rjmp    pci_ret
pci_rise:
    clr    s_backup
    out    TCNT0H, s_backup
    out    TCNT0L, s_backup
    rjmp    pci_ret

change_min_t:
    mov    min_t, m_pwm
    rjmp    pci_go    


;================================================
main:        
;================================================

    ;-----[ System Clock set (Internal IMHz) ]-----
    ldi        temp, SIGNATURE
    out        CCP, temp
    ldi        temp, 0x00
    out        CLKMSR, temp

    ldi        temp, SIGNATURE
    out        CCP, temp
    ldi        temp, 0x00
    out        CLKPSR, temp    

    nop
    nop
    nop
    nop

    ldi    NUM2, 2
    clr    pwm_cnt

    ldi    min_t, 0xFF

    ;--------------[ PORT ]-----------------
    ldi    temp, 0xFE
    out    DDRB, temp
    cbi    PORTB, 2

    ;---------------[ PIN CHANGE INTERRUPT ]-------
    sbi    PCICR, PCIE0
    sbi    PCMSK, PCINT0


    ;--------------[ TIMER ]--------------
    ldi    temp, 0x03
    out    TCCR0B, temp

    ; start from signal low.
standby:
    in    temp, PORTB
    andi    temp, 0x01
    brne    standby


    sei   ; enable global interrupt.

main_loop:
    push    temp
    pop    temp
    push    temp
    pop    temp
    push    temp
    pop    temp
    push    temp
    pop    temp

    rcall    do_pwm

    rjmp    main_loop

;================================================
do_pwm:        
;================================================
    inc    pwm_cnt
    cbr    pwm_cnt, (1<<7)
    brne    do_next
    inc    pwm_cnt
do_next:
    cp    m_pwm, pwm_cnt
    brsh    motor_on

    ;motor off
    cbi    PORTB, 2

    ret
;-------------------------------------
motor_on:
    sbi    PORTB, 2
    ret

;--------------[ E N D ]-----------------------
 

 

... no i poprawione fragmenty (zmienione na pomarańczowo i wytłuszczone - jest to w tej chwili tylko zamiana portu PB1 na PB3, jako we. sygnału z RX-a) z dodanym komentarzem ode mnie :

 

 

;POPRAWKA NR1

;

;

     sbic   PINB, 3                   ;skocz do następnego rozkazu jeśli na WE PB3 jest: "0".

;

;

;

     ldi   temp, 0xF7                ; zapisz do rejestru: temp wartość stałą: b11110111 (binarnie)

     out   DDRB, temp           ;ustaw pin PB3 mikrokontrolera jako WE.

;

;

;

     sbi   PCICR, PCIE0       ;ustaw bit  (PCIE0=1 w PCICR) na zezwolenie przerwań od układów zewnętrznych.

     sbi   PCMSK, PCINT3   ;ustaw bit (PCINT3=1 w PCMSK) - pin PB3 mikrokontrolera dla przerwań  zewnętrznych.

;

;

     ;start jeśli sygnał zero.

standbay:

     in   temp, PORTB        ;odczytaj zawartość z PORTB do rejestru temp.

     andi   temp, 0x08        ;iloczyn logiczny miedzy zawartością rej. temp a stałą: b00001000 (zmienić się może wskaźnik Z w rej. statusów)

     brne   standbay            ;jeśli wskażnik Z=0 (bo wynik andi różny od zera) to skocz pod adres: standbay, czyli wtedy gdy na WE PB3 jest: "1".

 

... noo, to była "bułka z masłem".  ;)  Zobaczymy jak będzie dalej,  :rolleyes:  a może są chętni do pomocy? :P


  • 0

#17 ssuchy

ssuchy
  • Modelarz
  • 771 postów
  • Age: 62
  • SkądLublin
  • Imię:Jerzy

Napisano 07 marzec 2018 - 01:19

No to brniemy dalej, ale zanim wrócę do softu, to jeszcze zróbmy zmiany w układzie (rozsądne po kolejnych przemyśleniach i paru testach warsztatowych), bo w międzyczasie przyszedł mi do głowy pomysł na dodatkową (całkiem klawą) funkcjonalność regulatora (o czym będzie w innym temacie). Poniżej schemat (mam nadzieję, że to już ostateczna wersja :P  ):

 

simple_micro_ESC.png

 

Cdn.


  • 1


Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych