Układ jest fizyczną realizacją projektu Elm ChaN
Jest to sterownik serwo do silników prądu stałego ze sprzężeniem zwrotnym na enkoderze inkrementalnym.
Program w asemblerze na At902313-SMC i nowa wersja na Attiny2313 - SMC3
Problem pojawia się niezależnie od wersji oprogramowania.
Konfiguracja tego sterownika odbywa się poprzez komunikację z komputerem za pomocą terminala poprzez RS232.
W wersji SMC i SMC3 (wersja bez ideksu a) użycie instrukcji "l enter" powoduję pojawienie się wartość licznika aktualnej pozycji (kręcąc enkoderem widzimy na bieżąco zmiany pozycji na ekranie)
Gdy układ nie pracuje dłuższy czas po jego włączeniu i sprawdzeniu wartości aktualnej pozycji nie ma tam wartości zero jak powinno być tylko najczęściej
3158208 = 0b 0011 0000 0011 0000 1100 0000 lub
1052736 = 0b 0001 0000 0001 0000 0100 0000 lub inne wartości (kiedyś pojawiały się inne teraz 95% poz 1 i 5%poz 2)
Wartość ta jest zapisana w rejestrach R10, R11, R12.
Układ mimo to pracuje dalej poprawnie po prostu silnik kręci się do tej pozycji i dalsza praca przebiega bez przeszkód (można też poprzez komendy zmiany trybu pracy dokonać zerowania licznika, każda zmiana trybu pracy skutkuje jego resetowaniem)
Nie dzieje się tak gdy układ się wyłączy i włączy ponownie w ciągu kilku lub kilkunastu minut.
Można sztucznie ten czas skróci, doszedłem do tego jak wywołać na 100% pojawienie się tego błędu. Wystarczy zewrzeć kondensator zasilający aby napięcie na nim było bliskie 0V i włączyć zasilanie.
Mierzyłem napięcie zasilające procesor i gdy zasilanie wróci przed uzyskaniem 0,02V błąd się nie pojawia, gdy napięcie jest mniejsze niż 0,01V wartość licznika jest błędna.
Sprawdzałem program i nic niepokojącego nie widzę.
Fusebity ustawione wg. mojej wiedzy oraz opisu na stronie ELM ChaN dobrze czyli
CKSEL=1111
SUT=10
CKOUT=1
CKDIV8=1
RSTDISBL=1
BODLEVEL=100
WDTON=1
EESAVE=1
DWEN=1
SPMEN=1
Zasilanie układu realizowane jest na przetwornicy impulsowej Lm574hvn oraz poprzez filtr LC L2=1,2uH (na schemacie jest napisane 12uH) C11=100nF.
Nóżka reset poprzez R1=10kom do +5 i kondensator C12 do masy.
Udało mi się ze 100% skutecznością uzyskać uruchomienie z błędem oraz bez błędu.
100% błąd jak już wcześniej napisałem zewrzeć nóżki kondensatora na lini 5V i włączyć zasilanie (12V z zasilacza od dysku zewnętrznego - przelotka usb - ale i na innych zasilaczach jest tak samo)
100% prawidłowe uruchomienie podłączyć zasilanie ale 5V (z tego samego zasilacza od dysku) do nóżki dławika ale od strony procesora (łatwiej mi było dotknąć do dławika niż do nóżki procka). Zwieranie kondensatora nie ma wpływu na prawidłowe uruchomienie zawsze jest ok.
Co ciekawe podłączenie zasilania 5V do drugiej nóżki dławika (oczywiście znowu po wcześniejszym chwilowym zwarciu kondensatora) daje błąd.
Fragment kodu do momentu RESET - reszta jest dostępna na stronie z linku -patrz pierwsza linijka.
Płytka drukowana dwu warstwowa zaprojektowana według mojego stanu wiedzy. Na płytce znajduje się przetwornica 5/5v do separacji galwanicznej sterowania, oraz transoptory (wartości rezystorów na schemacie nie odpowiadają tym rzeczywistym)
Parę lat temu się tym zajmowałem teraz temat powrócił i stanąłem przed ścianą. Układ pracuje poprawnie w zaśmieconym elektromagnetycznie środowisku bez obudowy (silnik 3kW zasilany z falownika z kablami bez ekranu same silniki które układ steruje 48V do 6A) i nic mu się nie dzieje (oczywiście po ponownym uruchomieniu aby licznik wskazywał 0 )
Co jeszcze mogę zrobić? Wszystko wskazuje na to że zasilanie jest nieprawidłowe, tylko dlaczego układ już po takim błędzie działa poprawnie?
UWAGA na schemacie niektóre wartości elementów są opisane nieprawidłowo to znaczy w rzeczywistym układzie mają inną wartość.
![[Attiny 2313][ASM] - Nieprawidłowy reset z powtarzającym się błędem [Attiny 2313][ASM] - Nieprawidłowy reset z powtarzającym się błędem](https://obrazki.elektroda.pl/2160094000_1348300001_thumb.jpg)
Jest to sterownik serwo do silników prądu stałego ze sprzężeniem zwrotnym na enkoderze inkrementalnym.
Program w asemblerze na At902313-SMC i nowa wersja na Attiny2313 - SMC3
Problem pojawia się niezależnie od wersji oprogramowania.
Konfiguracja tego sterownika odbywa się poprzez komunikację z komputerem za pomocą terminala poprzez RS232.
W wersji SMC i SMC3 (wersja bez ideksu a) użycie instrukcji "l enter" powoduję pojawienie się wartość licznika aktualnej pozycji (kręcąc enkoderem widzimy na bieżąco zmiany pozycji na ekranie)
Gdy układ nie pracuje dłuższy czas po jego włączeniu i sprawdzeniu wartości aktualnej pozycji nie ma tam wartości zero jak powinno być tylko najczęściej
3158208 = 0b 0011 0000 0011 0000 1100 0000 lub
1052736 = 0b 0001 0000 0001 0000 0100 0000 lub inne wartości (kiedyś pojawiały się inne teraz 95% poz 1 i 5%poz 2)
Wartość ta jest zapisana w rejestrach R10, R11, R12.
Układ mimo to pracuje dalej poprawnie po prostu silnik kręci się do tej pozycji i dalsza praca przebiega bez przeszkód (można też poprzez komendy zmiany trybu pracy dokonać zerowania licznika, każda zmiana trybu pracy skutkuje jego resetowaniem)
Nie dzieje się tak gdy układ się wyłączy i włączy ponownie w ciągu kilku lub kilkunastu minut.
Można sztucznie ten czas skróci, doszedłem do tego jak wywołać na 100% pojawienie się tego błędu. Wystarczy zewrzeć kondensator zasilający aby napięcie na nim było bliskie 0V i włączyć zasilanie.
Mierzyłem napięcie zasilające procesor i gdy zasilanie wróci przed uzyskaniem 0,02V błąd się nie pojawia, gdy napięcie jest mniejsze niż 0,01V wartość licznika jest błędna.
Sprawdzałem program i nic niepokojącego nie widzę.
Fusebity ustawione wg. mojej wiedzy oraz opisu na stronie ELM ChaN dobrze czyli
CKSEL=1111
SUT=10
CKOUT=1
CKDIV8=1
RSTDISBL=1
BODLEVEL=100
WDTON=1
EESAVE=1
DWEN=1
SPMEN=1
Zasilanie układu realizowane jest na przetwornicy impulsowej Lm574hvn oraz poprzez filtr LC L2=1,2uH (na schemacie jest napisane 12uH) C11=100nF.
Nóżka reset poprzez R1=10kom do +5 i kondensator C12 do masy.
Udało mi się ze 100% skutecznością uzyskać uruchomienie z błędem oraz bez błędu.
100% błąd jak już wcześniej napisałem zewrzeć nóżki kondensatora na lini 5V i włączyć zasilanie (12V z zasilacza od dysku zewnętrznego - przelotka usb - ale i na innych zasilaczach jest tak samo)
100% prawidłowe uruchomienie podłączyć zasilanie ale 5V (z tego samego zasilacza od dysku) do nóżki dławika ale od strony procesora (łatwiej mi było dotknąć do dławika niż do nóżki procka). Zwieranie kondensatora nie ma wpływu na prawidłowe uruchomienie zawsze jest ok.
Co ciekawe podłączenie zasilania 5V do drugiej nóżki dławika (oczywiście znowu po wcześniejszym chwilowym zwarciu kondensatora) daje błąd.
Fragment kodu do momentu RESET - reszta jest dostępna na stronie z linku -patrz pierwsza linijka.
Płytka drukowana dwu warstwowa zaprojektowana według mojego stanu wiedzy. Na płytce znajduje się przetwornica 5/5v do separacji galwanicznej sterowania, oraz transoptory (wartości rezystorów na schemacie nie odpowiadają tym rzeczywistym)
Parę lat temu się tym zajmowałem teraz temat powrócił i stanąłem przed ścianą. Układ pracuje poprawnie w zaśmieconym elektromagnetycznie środowisku bez obudowy (silnik 3kW zasilany z falownika z kablami bez ekranu same silniki które układ steruje 48V do 6A) i nic mu się nie dzieje (oczywiście po ponownym uruchomieniu aby licznik wskazywał 0 )
Co jeszcze mogę zrobić? Wszystko wskazuje na to że zasilanie jest nieprawidłowe, tylko dlaczego układ już po takim błędzie działa poprawnie?
UWAGA na schemacie niektóre wartości elementów są opisane nieprawidłowo to znaczy w rzeczywistym układzie mają inną wartość.
Kod: text
