r-mik - 2012-03-04 09:07:27

Trwają intensywne prace na rozwijaniem oprogramowania dekodera.Zrobiono:
- adresowanie długie
- obsługa 128 kroków jazdy
- programowanie DirectMode, PagedMode oraz PoM
- mapowanie wyjść
- tryb jazdy manewrowej
a) prędkość spada do wartości ustawionej w dedykowanym CV
b) definiowanie klawisza jazdy manewrowej (F3, F4 lub F5)
c) włączenie obu świateł (przód, tył)
d) blokowanie czerwonych świateł (definiowane: brak, wyjście F1, F2 lub F3)
- zwiększona precyzja przyspieszania (rozdzielczość 1ms a nie 8ms)
- CV2 i CV5 paramametrem jest napięcie (w setkach mV), a nie procentowa reprezentacja (0..255). Dekoder mierzy napięcie na torach i generuje PWM, aby utrzymać nastawione napięcie. Jest to wygodna opcja zwłaszcza  gdy booster (np ROCO) nie posiada stabilizacji napięcia.

Oprogramowanie powstaje na potrzeby nowej wersji dekodera:
- wymiary 41x18mm
- 7 wyjść funkcyjnych:
a) dwa wyjścia sterowanie światłami - wydajność 200mA
b) dwa wyjścia mocy (F1, F2) - wydajność 200mA
c) trzy wyjścia TTL (F3, F5) - wydajność 20mA
- płynne (definiowany czas) rozświetlanie/wygaszanie świateł
- rejestry ustawiające PWM dla wyjść sterowania światłami przyjmują, tak jak CV2 i CV5) napięcie w setkach mV.
- wyjście SUSI (np do sterowania dekoderem dżwiękowym)

Dalsze Prace:
- Trwają prace nad programowym PWM-em dla wyjść F1..F5


Szukam beta testerów!
Zainteresowanych proszę o kontakt.


********************************************************************************
Pod adresem r-mik.eu/_kolejki.eu/DekoderDCC_v2_0.zip znajduje się archiwum z nową wersją softu dla dekodera trakcji i oświetlenia na AtTiny85.
Opis CV:
//CV1 - Adres lokomotywy 1..127 domyślnie 3
//------------------------------------------------------------------------------//
//CV2 - Minimalne napięcie na silniku w setkach mV 0..50  domyślnie 20
// 10 - 1V
// 35 - 3,5V
// 50 - 5V
//------------------------------------------------------------------------------//
//CV3 - Czas rozpędziania dla AtTiny:            0..31   
// CV3 * 8ms * prędkość_zadana(255) / 8
// np: CV3=15 daje czas rozpedziania: 15 * 0.008s * 255/8 = 3,8 sekundy
//     CV3=1  daje czas rozpedziania:  1 * 0.008s * 255/8 = 0,2 sekundy
// Wpisanie 0 wyłącza funkcję
//                                                                           
//CV3 - Czas rozpędziania dla AtMega:            0..31   
// CV3 * 1ms * prędkość_zadana(255) / 1
// np: CV3=15 daje czas rozpedziania: 15 * 0.001s * 255/1 = 3,8 sekundy
//     CV3=1  daje czas rozpedziania:  1 * 0.001s * 255/1 = 0,2 sekundy
// Jak widac dla AtMega czasy sa takie same, tyle, że przystpieszanie płyne
// Wpisanie 0 wyłącza funkcję
//                                                                           
// Jeśli prędkość maksymalna bedzie niższa, to czas rozpędzania zmniejszy się:
// CV3 * 1ms * prędkość_zadana(100) / 1
//     CV3=15 daje czas rozpedziania: 15 * 0.001s * 100/1 = 1,5 sekundy
// Jak widac dla AtMega czasy sa takie same, tyle, że przystpieszanie płyne   
//               
// domyślna wartość 10
//------------------------------------------------------------------------------//
//CV4 - Czas hamowania (reguły jak dla rozpedziania) 0..15    domyślnie 3
//------------------------------------------------------------------------------//
//CV5 - Maksymalne napięcie na silniku w setkach mV    60..160 domyślnie 120
//------------------------------------------------------------------------------//
///CV9 - Częstotliwośc PWM'a (dekoder trakcji)            0..255
// lub wypełnienie PWM'a (jeśność lamp) dla dekodera oświetlenia        0..255
//                                                                           
// b0..b3:       
//Dla AtTiny:   
//  0 - 125Hz
//  1 - 125Hz   
//  2 - 125Hz (domyślna)           
//  3 - 250Hz                    
//  4 - 500Hz                
//  5 -  1kHz               
//  6 -  2kHz           
//  7 -  4kHz                   
//  8 -  8kHz               
//  9 - 15kHz               
// 10 - 15kHz               
//                                                                           
//Dla AtMega:
//  0 -  30Hz
//  1 -  30Hz
//  2 - 125Hz (domyślna)
//  3 - 125Hz
//  4 - 500Hz
//  5 - 500Hz
//  6 - 500Hz
//  7 -  4kHz
//  8 -  4kHz
//  9 -  4kHz
// 10 - 32kHz   
//                                                                           
//Dla małych prędkości:
// b4..b5:   
//       Tiny    / Mega   
//  00 - 125Hz   /  30Hz
//  01 - 250Hz   / 125Hz
//  10 - 500Hz   / 500Hz
//  11 -    1kHz /   4kHz
//
//Próg zmiany ze startowej wartości PWM warość podstawową:
// b6..b7   
//  00 - zawsze podstawowa (PWM z bitów b0..b3)   
//  00 - 12%
//  00 - 24%   
//  00 - 36%   
//   
// Wartość domyslna 2
//------------------------------------------------------------------------------//
//CV10 - wypełnienie PWM'a (jeśność lamp w przedsionkach)    0..255   
//------------------------------------------------------------------------------//
//CV11 - Czas w ms od braku transmisji do wyłączenia silnika 0..255 domyślnie 100
//  lub przejscia na jazdę analogową
//  np: CV11 = 127 da czas TimeOut 0.001s * 127 = 127 ms   
// To czy silnik sie zatrzyma, czy bedzie jazda analogowa zależy od CV29
//------------------------------------------------------------------------------//
//CV12 - wypełnienie PWM'a (jeśność lamp końca składu)    0..255   
//------------------------------------------------------------------------------//
//CV17,18 - Adres rozszerzony dekodera.                101..9999//
// CV17 - starsza część adresu,           
// CV18 - młodsza część adresu.           
// Aktywny tylko, gdy jest skonfigurowany w CV29
//------------------------------------------------------------------------------//
//CV24    - jazda manewrowa:                       
//    b0, b1 - aktywacja jazdy manewrowej funkcją:       
//        00    - brak jazdy manewrowej           
//        01    - F3                           
//        10    - F4                       
//        11    - F5                       
//    b2    - włączenie jazdy z prędkością zmniejszoną (CV25)       
//    b3    - równoczesne włączenie FR i FH           
//    b4.b5    - wyjście blokujace czerwone światła:   
//        00    - brak blokady               
//        01    - F1                   
//        10    - F2                   
//        11    - F3               
//  b6 - wolny               
//  b7 - wyłączenie w trybie manewrowym przyspieszania i zwalniania   
// domyślna wartość 14
//------------------------------------------------------------------------------//
//CV25 - Maksymalne napięcie podczas jazy manewrowej (w 100mV, jak dla CV2 i CV5)     domyślnie 60
//------------------------------------------------------------------------------//
//CV27 - Decoder Automatic Stopping Configuration
// (+1) Bit0 = "1" Zatrzymanie gdy odchyłka dodatnia i jedzie do przodu
// (+2) Bit1 = "1" Zatrzymanie gdy odchyłka ujemna i jedzie do tyłu
// (+4) Bit2 = "1" zmienia reakcję na kierunek
//Domyślnie 3
//------------------------------------------------------------------------------//
//CV29 - Konfiguracja dekodera - domyślnie 2       
//  (+1) Bit0 = "0" - DIR normal, "1" - DIR reversed (zamienione kierunki jazdy)
//  (+2) Bit1 = "0" 14 kroków, "1" - 28 kroków
//  (+4) Bit2 = "0" tylko DCC (brak transmisji to stop), "1" - Analog możliwy (gdy brak transmisji)
//         Bit3 = "0" dekoder tylko odbiera rozkazy, "1" = Power Source Conversion Enabled, See CV#12 for more information,
//       Bit4 = "0" prędkość kontrolowana przez CV2,5,6, "1" indywidualna tablica prędkości (CV66..CV95)
//         Bit5 = "0" adres jednobajtowy, =1 adres rozszeżony
//Bit 6 = Reserved for future use.
//Bit 7 = Accessory Decoder: "0" = Multifunction Decoder, "1" = Accessory Decoder (see CV #541 for a description of assignments for bits 0-6)
//------------------------------------------------------------------------------//

//CV30 - czas rozświetlania świateł    1..31    domyslnie 8
//CV31 - czas wygaszania świateł    1..31    domyslnie 2
// Czas rozświetlania przednich równy: CV30 * CV40 * 1ms/4
// np: dla: CV30=16, CV40=255:              1 * 255  * 1ms/4 = 1 sek   
//                                                                           
// Rejestr aktywny tylko dla AtMega    !!!   
//------------------------------------------------------------------------------//
//CV40 - napięcie na wyjściu świateł przednich w setkach mV            0..160
//CV41 - napięcie na wyjściu swiatła tył                        0..160
//CV42 - napięcie na wyjściu F1                                0..160   
//CV43 - napięcie na wyjściu F2                                0..160
//    Domyślnie 120
// Rejestr aktywny tylko dla AtMega    !!!   
//------------------------------------------------------------------------------//
//Rejestry konfigurujące wyjścia funkcyjne (mapowanie):            0..28   
//Przykład:    CV71 = 1 - wyjście 1 kontrolowane funkcją F1       
//            CV72 = 3 - wyjście 2 kontrolowane funkcją F3   
//            CV73 = 0 - wyjście 3 wyłączone       
//               
// Rejestr aktywny tylko dla AtMega    !!!   
//
#define    defCV71                1
#define    defCV72                2
#define    defCV73                3
#define    defCV74                4
#define    defCV75                5
#define    defCV76                6
#define    defCV77                7

//------------------------------------------------------------------------------//
//CV134 - poziom sygnału po którym nastapi zatrzymanie lokomotywy przy asymetrii na szynach
// Jeden bit to napięcie: 1.1V / 1024 * (100/4,3) = 2,5mV dla nowych płytek
// dla starych:                5V / 1024 * (22/4,3)  = 2,5mV
//
//------------------------------------------------------------------------------//
#define    defCV134    8


//---------------------------------------
Zachęcam do testowania.


Dekoder http://sklep.avt.pl/go/_search/full_sea … 0&type=all jest już dostępny w AVT. Wersja do montażu 36zł. Cena zmontowanego i uruchomionego dekodera 49zł.

www.kod.pun.pl www.secondlife.pun.pl www.wrogowiehordy.pun.pl www.malabs.pun.pl www.witch.pun.pl