Sterowanie mocą i/lub obrotami

Miejsce na posty nie związane z powyższymi
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Sterowanie mocą i/lub obrotami

Post autor: pimowo » 04 sty 2020, 15:26

Przyszła paczuszka i dziś to wszytko poskładałem - mało co się nie spóźniłem do pracy na drugą zmianę ;)
Po podłączeniu falownika do prądu nic nie wybuchło, a po podłączeniu filtra mogę sobie nim sterować.

Sterowanie wygląda różnie, wszytko zależy co jest podłączone:
- filtr 2W, działa prawie w całym zakresie - potencjometr bliski minimum to filtr klekocze i tak samo jest gdy potencjometr ustawie prawie na samym końcu
- filtr 5W, nie działa od 0 aż do 2/3 zakresu potencjometru, ale jak już ruszy to regulacja działa do samego końca
- cyrkulator (chyba) 2W działa od połowy do samego końca

Podsumowując, działa regulacja i jestem mega zadowolony. Ograniczenie regulacji zrobię sobie programowo - na początek będzie trzeba zrobić kalibrację (minimum i maksimum obrotów) a później będzie można już normalnie sterować.

Czyli mogę przejść do dalszych testów, a dokładniej muszę dobrać cyfrowy potencjometr i tu pojawia się następny problem, jak go dobrać?
Potrzebuję jakąś optoizolacje, sterowanie musi działać na odległość 1.5m (maks 2m) od głównego sterownika. Wyczytałem też, że są potencjometry z pamięcią - jak dobrze rozumiem to będzie on działał jak zwykły potencjometr tzn. jak ustawie "gałkę" to on zawsze będzie działał z tym ustawieniem aż tego nie przestawie. Dodatkowo potrzebny będzie potencjometr podwójny ponieważ chcę sterować dwoma pompami/filtrami. Macie jakiś pomysł jak to ugryźć?
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Sterowanie mocą i/lub obrotami

Post autor: niveasoft » 07 sty 2020, 11:28

Nie mam u siebie na miejscu, ale mam kod do podwójnego, bardzo starego DS1267. Natomiast leżą mi MCP4110 (pojedynczy po SPI) i piękne, poczwórne AD5254 po I2C z pamięcią nastaw w Eeprom :roll:

Myślę, że tak najbezpieczniej to by można zrobić na jakimś Tiny w SO8 sterowany RS323 i na końcu POT z Eeprom ;)
Na 2m RS485 to chyba przesada ;)

Nie wiem po co ta optoizolacja? Przepraszam bo nie przeglądałem noty tego kitu AVT. Potencjometry są zazwyczaj na 10K, 50K i 100K
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Sterowanie mocą i/lub obrotami

Post autor: pimowo » 07 sty 2020, 12:50

niveasoft pisze:Nie mam u siebie na miejscu, ale mam kod do podwójnego, bardzo starego DS1267. Natomiast leżą mi MCP4110 (pojedynczy po SPI) i piękne, poczwórne AD5254 po I2C z pamięcią nastaw w Eeprom :roll:

Ja to już kompletnie nie mam pojęcia co tu użyć :(
Czy SPI da radę działać na 2m czy raczej nie lub będzie to loteria?
niveasoft pisze:Myślę, że tak najbezpieczniej to by można zrobić na jakimś Tiny w SO8 sterowany RS323 i na końcu POT z Eeprom ;)
Czy to już nie będzie przesada? Główny uC (prawdopodobnie ATmega2560) + ATTiny85 do sterowania pompą + kolejny uC jako potencjometr ;)
niveasoft pisze:Na 2m RS485 to chyba przesada ;)
Chodziło o to, że chciałem wymienić uC w kicie AVT, dodać RS485, ale jak sam stwierdziłeś jest to zły pomysł.
niveasoft pisze:Nie wiem po co ta optoizolacja? Przepraszam bo nie przeglądałem noty tego kitu AVT
Wspomniałem o optoizolacji ponieważ w opisie kitu jest napisane:
Uwaga!
Potencjometr, zwory, radiatory i cała reszta układu jest galwanicznie
połączona z siecią energetyczną. Uruchomienie odbywa się przy zasilaniu z
sieci i podłączonym silniku. Dlatego podczas uruchomienia jak i późniejszej ! eksploatacji należy zachować szczególną ostrożność.
Oraz w artykule "ELEKTRONIKA PRAKTYCZNA 9/2012"
Uwaga: układ elektryczny falownika
nie jest galwanicznie odizolowany od sieci
energetycznej, dlatego nie przewidzieliśmy
na płytce drukowanej złącza ISP i procesor
musi zostać zaprogramowany przed włożeniem do podstawki. Przestrzegamy przed
próbami podłączania programatora do procesora umieszczonego w układzie. Może to
się skończyć uszkodzeniem programatora,
komputera oraz porażeniem elektrycznym!
niveasoft pisze:Potencjometry są zazwyczaj na 10K, 50K i 100K
W moim kicie jest 50k
.
schemat.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony 08 sty 2020, 6:43 przez pimowo, łącznie zmieniany 1 raz.
Awatar użytkownika
Oldman
Posty: 61
Rejestracja: 19 cze 2019, 11:15

Re: Sterowanie mocą i/lub obrotami

Post autor: Oldman » 07 sty 2020, 21:48

A może taki myk: przypuszczam, że Attiny85 mierzy napięcie na PB.2. To może wygeneruj sygnał PWM i w zależności od wypełnienia będziesz zmieniał napięcie na PB.2 Narysowałem "na kolanie" o co mi chodzi. Trzeba tylko dobrać R2 i C1 w zależności od częstotliwości sygnału PWM.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: Sterowanie mocą i/lub obrotami

Post autor: pimowo » 07 sty 2020, 23:02

Dziękuję za podpowiedź ;)
Gdyby dało się tym sterować poprzez PWM to rozwiązało by wszystkie moje je problemy - długość przewodu, zbędny cyfrowy potencjometr i optoizolacje za grosze.

Teraz siedzę w pracy, ale rano rzucę kod tego sterownika bo w sumie sam nie wiem jak co on dokładnie robi. Myślę, że Bartek rzuci okiem i pomoże w tłumaczeniu z asemblera na j.polski :)

EDYTA
  1. ;*************************************************************************
  2. ;*      Falownik jednofazowy
  3. ;*************************************************************************
  4. ;*      Programowanie procesora:
  5. ;*  (1) Program FUSEBITS: 0xFFDCE2
  6. ;*  (2) Program FLASH <AC.HEX>
  7. ;*  (3) Program EEPROM <AC.EEP>
  8. ;*************************************************************************
  9. ;* RST   DW SPI WD |EE   BOD  BOD  BOD |CK   CK  SU SU|CK   CK   CK   CK
  10. ;* DISBL EN EN  TON|SAVE LEV2 LEV1 LEV0|DIV8 OUT T1 T0|SEL3 SEL2 SEL1 SEL0
  11. ;* 1     1  0   1  |1    1    1    1   |0    1   1  0 |0    0    1    0  DEFAULT 0xffdf62
  12. ;* 1     1  0   1  |1    1    0    0   |1    1   1  0 |0    0    1    0  ICCAVR  0xffdce2
  13. ;*************************************************************************
  14.  
  15.         .include "tn85def.inc"
  16.  
  17.         .equ RAMPL = 163              ; dzielnik dla zmian czest (100Hz/s)
  18.         .equ OKRES = 243              ; okres przebiegu = OKRES+1
  19.  
  20.         .equ PWM   = OCR1B            ; rejestr PWM
  21.         .equ NORM  = PB0              ; zwora (otwarta = 50Hz, zwarta = ADC)
  22.         .equ STOP  = PB1              ; zwora (otwarta = STOP, zwarta = RUN)
  23.  
  24.         .def  dana =  r0              ; dana z tablic
  25.         .def index =  r1              ; zmienna indeksujaca
  26.         .def  temp =  r2              ; do obliczen PWM
  27.         .def ___r3 =  r3              ;
  28.         .def acceL =  r4              ; dzielnik rampy przespieszania
  29.         .def acceH =  r5              ;
  30.         .def deceL =  r6              ; dzielnik rampy hamowania
  31.         .def deceH =  r7              ;
  32.         .def ___r8 =  r8              ;
  33.         .def EEacH =  r9              ; starszy bajt rampy przyspieszania
  34.         .def EEdeH = r10              ; starszy bajt rampy hamowania
  35.         .def __r11 = r11              ;
  36.         .def fazaL = r12              ; faza L
  37.         .def fazaH = r13              ; faza H
  38.         .def  offL = r14              ; offset L
  39.         .def  offH = r15              ; offset H
  40.         .def  akum = r16              ; akum
  41.         .def   Od0 = r17              ; stala 0
  42.         .def   Od1 = r18              ; stala 1
  43.         .def Od122 = r19              ; stala 122 (50% okresu PWM)
  44.         .def Od163 = r20              ; stala 163 (mlodszy bajt dzielnika ramp)
  45.         .def  HZ50 = r21              ; stala 99 (50Hz)
  46.         .def EEfmi = r22              ; czestotliwosc zimnego startu
  47.         .def __r23 = r23              ;
  48.         .def  nast = r24              ; nastawiona czest
  49.         .def  freq = r25              ; biezaca czest=(freq+1)/2
  50. ;       .def __r26 = r26              ; XL
  51. ;       .def __r27 = r27              ; XH
  52. ;       .def __r28 = r28              ; YL
  53. ;       .def __r29 = r29              ; YH
  54. ;       .def __r30 = R30              ; ZL
  55. ;       .def __r31 = R31              ; ZH
  56.  
  57. ;****** Inicjalizacja portow *********************************************
  58.  
  59.         .cseg
  60.         .org 0x0000
  61. main:
  62.                                       ; - - R P!P V H R
  63.                                       ; - - S W W E L U
  64.                                       ;     T M M L D N
  65.         ldi akum,0x03                 ; 0 0 0 0 0 0 1 1
  66.         out PORTB,akum                ;
  67.         ldi akum,0x18                 ; 0 0 0 1 1 0 0 0
  68.         out DDRB,akum
  69.  
  70.         sbi ACSR,ACD                  ; wylacz komparator
  71.  
  72. ;****** Inicjalizacja stalych ********************************************
  73.  
  74.         ldi Od0,0                     ; inicjuj stale
  75.         ldi Od1,1
  76.         ldi Od122,122
  77.         ldi Od163,163
  78.         ldi HZ50,99                   ; 50Hz
  79.  
  80. ;****** Wczytanie stalych z EEPROM ***************************************
  81.  
  82.         out EEARH,Od0                 ; ustaw adres 1
  83.         mov akum,Od1
  84.         out EEARL,akum
  85.         sbi EECR,EERE
  86.         in EEfmi,EEDR                 ; wczytaj czest zimnego startu
  87.         cpi EEfmi,100                 ; <=50Hz?
  88.         brlo w_zakresie
  89.         mov EEfmi,Od0                 ; poza zakresem-przyjmij 0.5Hz
  90. w_zakresie:
  91.         inc akum                      ; ustaw adres 2
  92.         out EEARL,akum
  93.         sbi EECR,EERE
  94.         in EEacH,EEDR                 ; wczytaj rampe przyspieszania
  95.  
  96.         inc akum                      ; ustaw adres 3
  97.         out EEARL,akum
  98.         sbi EECR,EERE
  99.         in EEdeH,EEDR                 ; wczytaj rampe hamowania
  100.  
  101. ;****** Konfiguracja timera T1 *******************************************
  102.  
  103.         ldi akum,OKRES                ; ustaw okres PWM
  104.         out OCR1C,akum
  105.  
  106.         ldi akum,(1<<TOV1)            ; skasuja TOV1
  107.         out TIFR,akum
  108.  
  109.         ldi akum,(1<<CS10)            ; CK
  110.         out TCCR1,akum
  111.  
  112. ;****** Konfiguracja ADC *************************************************
  113.  
  114.         ldi akum,(1<<ADC1D)           ; wylacz bufor cyfrowy na ADC1
  115.         out DIDR0,akum
  116.  
  117.         ldi akum,(1<<ADLAR)|(1<<MUX0) ; ADCH, Vref=VCC, ADC1
  118.         out ADMUX,akum
  119.  
  120.         ldi akum,(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0) ; CK/128, FREE RUN
  121.         out ADCSRA,akum               ; start ADC
  122.  
  123. ;****** Wlaczenie watch-doga *********************************************
  124.  
  125.         wdr
  126.         ldi akum,(1<<WDCE)|(1<<WDE)   ; zezwol na zmiany w watchdog
  127.         out WDTCR,akum
  128.         ldi akum,(1<<WDE)
  129.         out WDTCR,akum                ; watchdog na 16ms
  130.  
  131. ;*************************************************************************
  132. ;*      Glowna petla programu
  133. ;*************************************************************************
  134. ; Wyznaczenie nastawionej czestotliwosci wyjsciowej
  135. ; Odczyt nastawy potencjometru i przeskalowanie
  136. petla:  ldi ZL,low(line<<1)           ; mlodszy/starszy bajt adresu bazowego...
  137.         ldi ZH,high(line<<1)          ; ...ze stablicowana funkcja liniowa
  138.         in akum,ADCH                  ; odczytaj nastawe potencjometru (8 bitow)
  139.         add ZL,akum                   ; dodaj ADC jako przesuniecie w tablicy
  140.         adc ZH,Od0                    ; dodaj ewentualne przniesienie
  141.         lpm nast,Z                    ; odczytaj nastawiona czestotliwosc
  142. ; Sprawdzenie zwory NORM
  143.         sbic PINB,NORM                ; zworka NORM zwarta => zostaw nastawe z ADC
  144.         mov nast,HZ50                 ; zworka otwarta => przyjmij 50Hz
  145. ; Sparwdzenie zwory STOP
  146.         sbic PINB,STOP                ; zworka STOP?
  147.         rjmp jest_stop                ; rozwarta => hamowanie/wylaczenie
  148.         in akum,GTCCR
  149.         sbrc akum,COM1B0              ; wyjscia OC1B/!OC1B odlaczone?
  150.         rjmp przeskocz_stop           ; nie => przeskocz
  151.         mov freq,EEfmi                ; tak +> zimny start => ruszaj od EEfmin
  152.         mov fazaL,Od0                 ; startuj z zerowa faza
  153.         mov fazaH,Od0
  154.         ldi akum,(1<<PWM1B)|(1<<COM1B0) ; wlacz PWM, dolacz OC1B/!OC1B
  155.         out GTCCR,akum
  156.         rjmp przeskocz_stop
  157. jest_stop:                            ; zworka STOP rozwarta
  158.         mov nast,Od0                  ; nastaw 0.5Hz
  159.         cpse freq,nast                ; freq spadla do nastawionej?
  160.         rjmp przeskocz_stop           ; nie => bez zatrzymywania
  161.         out GTCCR,Od0                 ; tak => wylacz PWM, odlacz OC1B/!OC1B
  162. przeskocz_stop:
  163. ; Lagodne przyspieszanie
  164.         sub acceL,Od1                 ; odliczanie czasu rampy przyspieszania
  165.         brcc nie_przyspieszaj         ; bez przeniesienia? => odliczaj dalej
  166.         mov acceL,Od163               ; przeladuj mlodszy bajt licznika
  167.         sub acceH,Od1                 ; dekrement starszego bajtu licznika
  168.         brcc nie_przyspieszaj         ; przeniesienie? tak => bez przyspieszania
  169.         mov acceL,Od163               ; tak => przeladuj odliczany czas
  170.         mov acceH,EEacH               ; przeladuj starszy bajt odliczanego czasu
  171.         cp freq,nast                  ; biezaca >= nastawiona?
  172.         brsh nie_przyspieszaj         ; tak => nie przyspieszaj
  173.         inc freq                      ; nie => zwieksz biezaca
  174. nie_przyspieszaj:
  175. ; Lagodne hamowanie
  176.         sub deceL,Od1                 ; odliczanie czasu rampy hamowania
  177.         brcc nie_hamuj                ; bez przeniesienia? => odliczaj dalej
  178.         mov deceL,Od163               ; przeladuj mlodszy bajt licznika
  179.         sub deceH,Od1                 ; dekrement starszego bajtu licznika
  180.         brcc nie_hamuj                ; przeniesienie? tak => bez hamowania
  181.         mov deceL,Od163               ; tak => przeladuj odliczany czas
  182.         mov deceH,EEdeH               ; przeladuj starszy bajt odliczanego czasu
  183.         cp nast,freq                  ; nastawiona >= biezaca?
  184.         brsh nie_hamuj                ; tak => nie hamuj
  185.         dec freq                      ; nie => zmniejsz biezaca
  186. nie_hamuj:
  187. ; Syntezowanie przebiegu wyjsciowego
  188.         add fazaL,freq                ; oblicz nowa faze
  189.         adc fazaH,Od0                 ; starszy bajt fazy
  190.         add fazaL,Od1                 ; dodaj offset: czest=(freq+1)/2
  191.         adc fazaH,Od0                 ; starszy bajt to indeks probki
  192.         ldi ZL,low(tind<<1)           ; adres bazowy tablicy indeksow
  193.         ldi ZH,high(tind<<1)          ; starszy bajt
  194.         add ZL,fazaH                  ; dodaj starszy bajt fazy
  195.         adc ZH,Od0                    ; jako przesuniecie w tablicy indeksow
  196.         lpm index,Z                   ; pobierz indeks w pierwszej cwiartce
  197. ; Wyznaczenie przesuniecia dla tablicy probek
  198.         mov offL,freq                 ; biezaca czestotliwosc jako przesuniecie
  199.         mov offH,Od0                  ; starszy bajt
  200.         lsl offL                      ; *2
  201.         rol offH
  202.         lsl offL                      ; *4
  203.         rol offH
  204.         lsl offL                      ; *8
  205.         rol offH
  206.         lsl offL                      ; *16
  207.         rol offH
  208.         lsl offL                      ; *32
  209.         rol offH
  210.         lsl offL                      ; *64
  211.         rol offH                      ; elementy tablicy z probkami maja 64 bajty
  212. ; Pobranie probki sygnalu wyjsciowego
  213.         ldi ZL,low(sine<<1)           ; adres bazowy tablicy z probkami
  214.         ldi ZH,high(sine<<1)          ; starszy bajt
  215.         add ZL,offL                   ; dodaj przesuniecie (freq*64)
  216.         adc ZH,offH                   ; starszy bajt
  217.         add ZL,index                  ; dodaj kat w pierwszej cwiartce
  218.         adc ZH,Od0                    ; starszy bajt
  219.         lpm temp,Z                    ; pobierz nowa probke z tablicy
  220. ; Zmiana znaku w drugiej polowce okresu i dodanie przesuniecia
  221.         sbrc fazaH,7                  ; pierwsza polowka okresu (0..127)?
  222.         com temp                      ; nie => temp = -temp
  223.         add temp,Od122                ; przenies do zakresu 1..122..243
  224. ; Wystaw obliczone probki sygnalu wyjsciowego
  225.         out PWM,temp                  ; aktualizuj rejestr PWM
  226.         wdr                           ; skasuj watchdoga
  227. ; Czekaj do konca okresu generatora PWM
  228. czekaj_na_koniec_okresu:
  229.         in akum,TIFR                  ; wczytaj rejestr znacznikow
  230.         sbrs akum,TOV1                ; jest TOV1?
  231.         rjmp czekaj_na_koniec_okresu  ; nie => sprawdzaj dalej
  232.         ldi akum,(1<<TOV1)            ; tak => skasuj TOV1
  233.         out TIFR,akum
  234. ; Koniec glownej petli programu
  235.         rjmp petla                    ; wroc na poczatek petli
  236.  
  237. ;*************************************************************************
  238. ;*      Tablice stalych
  239. ;*************************************************************************
  240.  
  241.         .org 0x0080                   ; adresy sa 2-bajtowe
  242. ; faza (0..255) na cwiartki (0..63,63..0,0..63,63..0)
  243. tind:
  244. .db   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15
  245. .db  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
  246. .db  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47
  247. .db  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63
  248. .db  63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48
  249. .db  47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32
  250. .db  31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16
  251. .db  15, 14, 13, 12, 11, 10,  9,  8,  7,  6,  5,  4,  3,  2,  1,  0
  252. .db   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15
  253. .db  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
  254. .db  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47
  255. .db  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63
  256. .db  63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48
  257. .db  47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32
  258. .db  31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16
  259. .db  15, 14, 13, 12, 11, 10,  9,  8,  7,  6,  5,  4,  3,  2,  1,  0
  260.  
  261. ; napiecie potencjometru (0..255) => czestotliwosc (0..115)
  262. line:
  263. .db   0,  0,  1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  5,  6,  6,  7
  264. .db   7,  8,  8,  9,  9,  9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14
  265. .db  14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 19, 19, 20, 20, 21, 21
  266. .db  22, 22, 23, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 28
  267. .db  29, 29, 30, 30, 31, 31, 32, 32, 32, 33, 33, 34, 34, 35, 35, 36
  268. .db  36, 37, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 41, 42, 42, 43
  269. .db  43, 44, 44, 45, 45, 46, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50
  270. .db  51, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55, 55, 56, 56, 57, 57
  271. .db  58, 58, 59, 59, 60, 60, 60, 61, 61, 62, 62, 63, 63, 64, 64, 64
  272. .db  65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 69, 70, 70, 71, 71, 72
  273. .db  72, 73, 73, 74, 74, 74, 75, 75, 76, 76, 77, 77, 78, 78, 78, 79
  274. .db  79, 80, 80, 81, 81, 82, 82, 83, 83, 83, 84, 84, 85, 85, 86, 86
  275. .db  87, 87, 87, 88, 88, 89, 89, 90, 90, 91, 91, 92, 92, 92, 93, 93
  276. .db  94, 94, 95, 95, 96, 96, 97, 97, 97, 98, 98, 99, 99,100,100,101
  277. .db 101,101,102,102,103,103,104,104,105,105,106,106,106,107,107,108
  278. .db 108,109,109,110,110,110,111,111,112,112,113,113,114,114,115,115
  279.  
  280. sine:
  281. ; ksztalt przebieg dla 0.5..50.0Hz [sin(x)]
  282. .db   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
  283. .db   0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1
  284. .db   1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1
  285. .db   1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1
  286. .db   0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1
  287. .db   1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,  2
  288. .db   2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2
  289. .db   2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2
  290. .db   0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1
  291. .db   1,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  3,  3
  292. .db   3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3
  293. .db   3,  3,  3,  3,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4
  294. .db   0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2
  295. .db   2,  2,  2,  2,  2,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3
  296. .db   4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4
  297. .db   5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5
  298. .db   0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,  2,  2
  299. .db   2,  3,  3,  3,  3,  3,  3,  3,  4,  4,  4,  4,  4,  4,  4,  4
  300. .db   4,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  6,  6
  301. .db   6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6
  302. .db   0,  0,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,  2,  2,  3,  3
  303. .db   3,  3,  3,  3,  4,  4,  4,  4,  4,  4,  4,  5,  5,  5,  5,  5
  304. .db   5,  5,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  7,  7,  7,  7
  305. .db   7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7
  306. .db   0,  0,  1,  1,  1,  1,  1,  2,  2,  2,  2,  2,  3,  3,  3,  3
  307. .db   3,  4,  4,  4,  4,  4,  5,  5,  5,  5,  5,  5,  6,  6,  6,  6
  308. .db   6,  6,  6,  7,  7,  7,  7,  7,  7,  7,  7,  8,  8,  8,  8,  8
  309. .db   8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8
  310. .db   0,  0,  1,  1,  1,  1,  2,  2,  2,  2,  3,  3,  3,  3,  4,  4
  311. .db   4,  4,  4,  5,  5,  5,  5,  5,  6,  6,  6,  6,  6,  7,  7,  7
  312. .db   7,  7,  7,  8,  8,  8,  8,  8,  8,  8,  8,  9,  9,  9,  9,  9
  313. .db   9,  9,  9,  9,  9,  9,  9, 10, 10, 10, 10, 10, 10, 10, 10, 10
  314. .db   0,  1,  1,  1,  1,  2,  2,  2,  2,  3,  3,  3,  3,  4,  4,  4
  315. .db   4,  5,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,  7,  8,  8
  316. .db   8,  8,  8,  8,  9,  9,  9,  9,  9,  9, 10, 10, 10, 10, 10, 10
  317. .db  10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11
  318. .db   0,  1,  1,  1,  1,  2,  2,  2,  3,  3,  3,  4,  4,  4,  4,  5
  319. .db   5,  5,  5,  6,  6,  6,  7,  7,  7,  7,  7,  8,  8,  8,  8,  9
  320. .db   9,  9,  9,  9, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11
  321. .db  11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12
  322. .db   0,  1,  1,  1,  2,  2,  2,  3,  3,  3,  4,  4,  4,  5,  5,  5
  323. .db   5,  6,  6,  6,  7,  7,  7,  7,  8,  8,  8,  8,  9,  9,  9,  9
  324. .db  10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12
  325. .db  12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13
  326. .db   0,  1,  1,  1,  2,  2,  3,  3,  3,  4,  4,  4,  5,  5,  5,  6
  327. .db   6,  6,  7,  7,  7,  8,  8,  8,  8,  9,  9,  9, 10, 10, 10, 10
  328. .db  11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13
  329. .db  14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15
  330. .db   0,  1,  1,  2,  2,  2,  3,  3,  3,  4,  4,  5,  5,  5,  6,  6
  331. .db   6,  7,  7,  7,  8,  8,  8,  9,  9,  9, 10, 10, 10, 11, 11, 11
  332. .db  11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 15
  333. .db  15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16
  334. .db   0,  1,  1,  2,  2,  3,  3,  3,  4,  4,  5,  5,  5,  6,  6,  7
  335. .db   7,  7,  8,  8,  8,  9,  9,  9, 10, 10, 10, 11, 11, 11, 12, 12
  336. .db  12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 15, 16, 16
  337. .db  16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17
  338. .db   0,  1,  1,  2,  2,  3,  3,  4,  4,  4,  5,  5,  6,  6,  7,  7
  339. .db   7,  8,  8,  9,  9,  9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13
  340. .db  13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 17, 17
  341. .db  17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18
  342. .db   0,  1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  7,  7,  7
  343. .db   8,  8,  9,  9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14
  344. .db  14, 14, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18
  345. .db  18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19
  346. .db   1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  7,  7,  7,  8
  347. .db   8,  9,  9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15
  348. .db  15, 15, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19
  349. .db  19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21
  350. .db   1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  7,  7,  8,  8
  351. .db   9,  9, 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15
  352. .db  16, 16, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 20, 20, 20, 20
  353. .db  20, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22
  354. .db   1,  1,  2,  2,  3,  3,  4,  5,  5,  6,  6,  7,  7,  8,  8,  9
  355. .db   9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 16
  356. .db  17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21
  357. .db  22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23
  358. .db   1,  1,  2,  2,  3,  4,  4,  5,  5,  6,  7,  7,  8,  8,  9,  9
  359. .db  10, 10, 11, 11, 12, 13, 13, 14, 14, 15, 15, 15, 16, 16, 17, 17
  360. .db  18, 18, 18, 19, 19, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22
  361. .db  23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24
  362. .db   1,  1,  2,  3,  3,  4,  4,  5,  6,  6,  7,  7,  8,  9,  9, 10
  363. .db  10, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18
  364. .db  19, 19, 19, 20, 20, 21, 21, 21, 22, 22, 22, 23, 23, 23, 23, 24
  365. .db  24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25
  366. .db   1,  1,  2,  3,  3,  4,  5,  5,  6,  7,  7,  8,  8,  9, 10, 10
  367. .db  11, 11, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 18, 18, 18, 19
  368. .db  19, 20, 20, 21, 21, 21, 22, 22, 23, 23, 23, 24, 24, 24, 24, 25
  369. .db  25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27
  370. .db   1,  1,  2,  3,  3,  4,  5,  5,  6,  7,  7,  8,  9,  9, 10, 11
  371. .db  11, 12, 13, 13, 14, 14, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20
  372. .db  20, 21, 21, 22, 22, 22, 23, 23, 24, 24, 24, 25, 25, 25, 26, 26
  373. .db  26, 26, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28
  374. .db   1,  1,  2,  3,  4,  4,  5,  6,  6,  7,  8,  8,  9, 10, 11, 11
  375. .db  12, 13, 13, 14, 14, 15, 16, 16, 17, 17, 18, 19, 19, 20, 20, 21
  376. .db  21, 22, 22, 23, 23, 23, 24, 24, 25, 25, 25, 26, 26, 26, 27, 27
  377. .db  27, 27, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29
  378. .db   1,  1,  2,  3,  4,  4,  5,  6,  7,  7,  8,  9, 10, 10, 11, 12
  379. .db  12, 13, 14, 14, 15, 16, 16, 17, 18, 18, 19, 19, 20, 20, 21, 22
  380. .db  22, 23, 23, 24, 24, 24, 25, 25, 26, 26, 26, 27, 27, 27, 28, 28
  381. .db  28, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30
  382. .db   1,  2,  2,  3,  4,  5,  5,  6,  7,  8,  8,  9, 10, 11, 11, 12
  383. .db  13, 14, 14, 15, 16, 16, 17, 18, 18, 19, 19, 20, 21, 21, 22, 22
  384. .db  23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 28, 29, 29, 29
  385. .db  29, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31
  386. .db   1,  2,  2,  3,  4,  5,  6,  6,  7,  8,  9, 10, 10, 11, 12, 13
  387. .db  13, 14, 15, 16, 16, 17, 18, 18, 19, 20, 20, 21, 21, 22, 23, 23
  388. .db  24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 29, 30, 30, 30
  389. .db  31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, 33
  390. .db   1,  2,  3,  3,  4,  5,  6,  7,  7,  8,  9, 10, 11, 12, 12, 13
  391. .db  14, 15, 15, 16, 17, 18, 18, 19, 20, 20, 21, 22, 22, 23, 24, 24
  392. .db  25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 30, 31, 31, 31
  393. .db  32, 32, 32, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 34, 34, 34
  394. .db   1,  2,  3,  3,  4,  5,  6,  7,  8,  9,  9, 10, 11, 12, 13, 14
  395. .db  14, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22, 22, 23, 24, 24, 25
  396. .db  26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 31, 32, 32, 33
  397. .db  33, 33, 33, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 35
  398. .db   1,  2,  3,  4,  4,  5,  6,  7,  8,  9, 10, 11, 11, 12, 13, 14
  399. .db  15, 16, 16, 17, 18, 19, 20, 20, 21, 22, 22, 23, 24, 25, 25, 26
  400. .db  26, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 33, 34
  401. .db  34, 34, 35, 35, 35, 35, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36
  402. .db   1,  2,  3,  4,  5,  6,  6,  7,  8,  9, 10, 11, 12, 13, 14, 14
  403. .db  15, 16, 17, 18, 19, 19, 20, 21, 22, 22, 23, 24, 25, 25, 26, 27
  404. .db  27, 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 34, 35
  405. .db  35, 35, 36, 36, 36, 36, 37, 37, 37, 37, 37, 37, 37, 37, 38, 38
  406. .db   1,  2,  3,  4,  5,  6,  7,  8,  9,  9, 10, 11, 12, 13, 14, 15
  407. .db  16, 17, 18, 18, 19, 20, 21, 22, 22, 23, 24, 25, 25, 26, 27, 28
  408. .db  28, 29, 29, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36
  409. .db  36, 37, 37, 37, 37, 38, 38, 38, 38, 38, 38, 39, 39, 39, 39, 39
  410. .db   1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 14, 15
  411. .db  16, 17, 18, 19, 20, 21, 22, 22, 23, 24, 25, 25, 26, 27, 28, 28
  412. .db  29, 30, 30, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37
  413. .db  37, 38, 38, 38, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 40
  414. .db   1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16
  415. .db  17, 18, 19, 20, 20, 21, 22, 23, 24, 25, 25, 26, 27, 28, 29, 29
  416. .db  30, 31, 31, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38
  417. .db  39, 39, 39, 39, 40, 40, 40, 40, 41, 41, 41, 41, 41, 41, 41, 41
  418. .db   1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16
  419. .db  17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 26, 27, 28, 29, 29, 30
  420. .db  31, 32, 32, 33, 34, 34, 35, 35, 36, 37, 37, 38, 38, 38, 39, 39
  421. .db  40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 42, 42, 42, 42, 42
  422. .db   1,  2,  3,  4,  5,  6,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17
  423. .db  18, 19, 20, 21, 22, 23, 23, 24, 25, 26, 27, 28, 29, 29, 30, 31
  424. .db  32, 32, 33, 34, 35, 35, 36, 36, 37, 38, 38, 39, 39, 40, 40, 40
  425. .db  41, 41, 41, 42, 42, 42, 43, 43, 43, 43, 43, 43, 43, 44, 44, 44
  426. .db   1,  2,  3,  4,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17
  427. .db  18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 29, 30, 31, 32
  428. .db  33, 33, 34, 35, 35, 36, 37, 37, 38, 39, 39, 40, 40, 41, 41, 42
  429. .db  42, 42, 43, 43, 43, 44, 44, 44, 44, 44, 44, 45, 45, 45, 45, 45
  430. .db   1,  2,  3,  5,  6,  7,  8,  9, 10, 11, 12, 13, 15, 16, 17, 18
  431. .db  19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 28, 29, 30, 31, 32, 33
  432. .db  34, 34, 35, 36, 36, 37, 38, 38, 39, 40, 40, 41, 41, 42, 42, 43
  433. .db  43, 43, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 46, 46, 46
  434. .db   1,  2,  3,  5,  6,  7,  8,  9, 10, 12, 13, 14, 15, 16, 17, 18
  435. .db  19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34
  436. .db  34, 35, 36, 37, 37, 38, 39, 39, 40, 41, 41, 42, 42, 43, 43, 44
  437. .db  44, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47, 47, 47, 47, 47
  438. .db   1,  2,  4,  5,  6,  7,  8, 10, 11, 12, 13, 14, 15, 16, 18, 19
  439. .db  20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 34
  440. .db  35, 36, 37, 38, 38, 39, 40, 40, 41, 42, 42, 43, 43, 44, 44, 45
  441. .db  45, 46, 46, 46, 47, 47, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48
  442. .db   1,  2,  4,  5,  6,  7,  9, 10, 11, 12, 13, 15, 16, 17, 18, 19
  443. .db  20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 34, 35
  444. .db  36, 37, 38, 39, 39, 40, 41, 41, 42, 43, 43, 44, 45, 45, 46, 46
  445. .db  46, 47, 47, 48, 48, 48, 49, 49, 49, 49, 49, 49, 50, 50, 50, 50
  446. .db   1,  3,  4,  5,  6,  8,  9, 10, 11, 12, 14, 15, 16, 17, 18, 20
  447. .db  21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36
  448. .db  37, 38, 39, 40, 40, 41, 42, 42, 43, 44, 44, 45, 46, 46, 47, 47
  449. .db  48, 48, 48, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51, 51, 51
  450. .db   1,  3,  4,  5,  6,  8,  9, 10, 11, 13, 14, 15, 16, 18, 19, 20
  451. .db  21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37
  452. .db  38, 39, 40, 40, 41, 42, 43, 43, 44, 45, 45, 46, 47, 47, 48, 48
  453. .db  49, 49, 50, 50, 50, 51, 51, 51, 51, 52, 52, 52, 52, 52, 52, 52
  454. .db   1,  3,  4,  5,  7,  8,  9, 10, 12, 13, 14, 16, 17, 18, 19, 21
  455. .db  22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38
  456. .db  39, 40, 41, 41, 42, 43, 44, 44, 45, 46, 47, 47, 48, 48, 49, 49
  457. .db  50, 50, 51, 51, 51, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 53
  458. .db   1,  3,  4,  5,  7,  8,  9, 11, 12, 13, 15, 16, 17, 18, 20, 21
  459. .db  22, 23, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39
  460. .db  40, 41, 41, 42, 43, 44, 45, 46, 46, 47, 48, 48, 49, 49, 50, 50
  461. .db  51, 51, 52, 52, 53, 53, 53, 54, 54, 54, 54, 54, 54, 54, 54, 54
  462. .db   1,  3,  4,  5,  7,  8, 10, 11, 12, 14, 15, 16, 18, 19, 20, 21
  463. .db  23, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40
  464. .db  41, 41, 42, 43, 44, 45, 46, 47, 47, 48, 49, 49, 50, 51, 51, 52
  465. .db  52, 53, 53, 53, 54, 54, 54, 55, 55, 55, 55, 55, 56, 56, 56, 56
  466. .db   1,  3,  4,  6,  7,  8, 10, 11, 13, 14, 15, 17, 18, 19, 21, 22
  467. .db  23, 24, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40
  468. .db  41, 42, 43, 44, 45, 46, 47, 48, 48, 49, 50, 50, 51, 52, 52, 53
  469. .db  53, 54, 54, 55, 55, 55, 56, 56, 56, 56, 57, 57, 57, 57, 57, 57
  470. .db   1,  3,  4,  6,  7,  9, 10, 11, 13, 14, 16, 17, 18, 20, 21, 22
  471. .db  24, 25, 26, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41
  472. .db  42, 43, 44, 45, 46, 47, 48, 49, 49, 50, 51, 51, 52, 53, 53, 54
  473. .db  54, 55, 55, 56, 56, 56, 57, 57, 57, 58, 58, 58, 58, 58, 58, 58
  474. .db   1,  3,  4,  6,  7,  9, 10, 12, 13, 15, 16, 17, 19, 20, 21, 23
  475. .db  24, 26, 27, 28, 29, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42
  476. .db  43, 44, 45, 46, 47, 48, 49, 50, 50, 51, 52, 53, 53, 54, 54, 55
  477. .db  56, 56, 56, 57, 57, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59
  478. .db   1,  3,  4,  6,  7,  9, 10, 12, 13, 15, 16, 18, 19, 21, 22, 23
  479. .db  25, 26, 27, 29, 30, 31, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43
  480. .db  44, 45, 46, 47, 48, 49, 50, 51, 51, 52, 53, 54, 54, 55, 56, 56
  481. .db  57, 57, 58, 58, 58, 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, 60
  482. .db   2,  3,  5,  6,  8,  9, 11, 12, 14, 15, 17, 18, 20, 21, 22, 24
  483. .db  25, 27, 28, 29, 31, 32, 33, 35, 36, 37, 38, 39, 41, 42, 43, 44
  484. .db  45, 46, 47, 48, 49, 50, 51, 52, 52, 53, 54, 55, 55, 56, 57, 57
  485. .db  58, 58, 59, 59, 60, 60, 60, 61, 61, 61, 61, 61, 62, 62, 62, 62
  486. .db   2,  3,  5,  6,  8,  9, 11, 12, 14, 15, 17, 18, 20, 21, 23, 24
  487. .db  26, 27, 28, 30, 31, 33, 34, 35, 36, 38, 39, 40, 41, 43, 44, 45
  488. .db  46, 47, 48, 49, 50, 51, 52, 53, 53, 54, 55, 56, 56, 57, 58, 58
  489. .db  59, 59, 60, 60, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63
  490. .db   2,  3,  5,  6,  8,  9, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25
  491. .db  26, 28, 29, 30, 32, 33, 35, 36, 37, 38, 40, 41, 42, 43, 44, 46
  492. .db  47, 48, 49, 50, 51, 52, 53, 54, 54, 55, 56, 57, 58, 58, 59, 59
  493. .db  60, 61, 61, 62, 62, 62, 63, 63, 63, 64, 64, 64, 64, 64, 64, 64
  494. .db   2,  3,  5,  6,  8, 10, 11, 13, 14, 16, 18, 19, 21, 22, 24, 25
  495. .db  27, 28, 30, 31, 32, 34, 35, 37, 38, 39, 40, 42, 43, 44, 45, 46
  496. .db  48, 49, 50, 51, 52, 53, 54, 55, 55, 56, 57, 58, 59, 59, 60, 61
  497. .db  61, 62, 62, 63, 63, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 65
  498. .db   2,  3,  5,  7,  8, 10, 11, 13, 15, 16, 18, 19, 21, 23, 24, 26
  499. .db  27, 29, 30, 32, 33, 34, 36, 37, 39, 40, 41, 42, 44, 45, 46, 47
  500. .db  48, 50, 51, 52, 53, 54, 55, 56, 57, 57, 58, 59, 60, 60, 61, 62
  501. .db  62, 63, 63, 64, 64, 65, 65, 65, 66, 66, 66, 66, 66, 67, 67, 67
  502. .db   2,  3,  5,  7,  8, 10, 12, 13, 15, 17, 18, 20, 21, 23, 25, 26
  503. .db  28, 29, 31, 32, 34, 35, 37, 38, 39, 41, 42, 43, 45, 46, 47, 48
  504. .db  49, 51, 52, 53, 54, 55, 56, 57, 58, 58, 59, 60, 61, 62, 62, 63
  505. .db  63, 64, 65, 65, 65, 66, 66, 67, 67, 67, 67, 68, 68, 68, 68, 68
  506. .db   2,  3,  5,  7,  9, 10, 12, 14, 15, 17, 19, 20, 22, 23, 25, 27
  507. .db  28, 30, 31, 33, 34, 36, 37, 39, 40, 41, 43, 44, 45, 47, 48, 49
  508. .db  50, 51, 53, 54, 55, 56, 57, 58, 59, 59, 60, 61, 62, 63, 63, 64
  509. .db  65, 65, 66, 66, 67, 67, 67, 68, 68, 68, 69, 69, 69, 69, 69, 69
  510. .db   2,  3,  5,  7,  9, 10, 12, 14, 15, 17, 19, 21, 22, 24, 25, 27
  511. .db  29, 30, 32, 33, 35, 36, 38, 39, 41, 42, 43, 45, 46, 47, 49, 50
  512. .db  51, 52, 53, 55, 56, 57, 58, 59, 60, 60, 61, 62, 63, 64, 64, 65
  513. .db  66, 66, 67, 67, 68, 68, 69, 69, 69, 70, 70, 70, 70, 70, 70, 70
  514. .db   2,  4,  5,  7,  9, 11, 12, 14, 16, 17, 19, 21, 23, 24, 26, 28
  515. .db  29, 31, 32, 34, 35, 37, 38, 40, 41, 43, 44, 46, 47, 48, 50, 51
  516. .db  52, 53, 54, 55, 57, 58, 59, 60, 61, 62, 62, 63, 64, 65, 66, 66
  517. .db  67, 67, 68, 69, 69, 69, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71
  518. .db   2,  4,  5,  7,  9, 11, 13, 14, 16, 18, 20, 21, 23, 25, 26, 28
  519. .db  30, 31, 33, 34, 36, 38, 39, 41, 42, 44, 45, 46, 48, 49, 50, 52
  520. .db  53, 54, 55, 56, 58, 59, 60, 61, 62, 63, 63, 64, 65, 66, 67, 67
  521. .db  68, 69, 69, 70, 70, 71, 71, 71, 72, 72, 72, 72, 72, 73, 73, 73
  522. .db   2,  4,  5,  7,  9, 11, 13, 15, 16, 18, 20, 22, 23, 25, 27, 28
  523. .db  30, 32, 33, 35, 37, 38, 40, 41, 43, 44, 46, 47, 49, 50, 51, 53
  524. .db  54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 65, 66, 67, 68, 68
  525. .db  69, 70, 70, 71, 71, 72, 72, 73, 73, 73, 73, 74, 74, 74, 74, 74
  526. .db   2,  4,  6,  7,  9, 11, 13, 15, 17, 18, 20, 22, 24, 25, 27, 29
  527. .db  31, 32, 34, 36, 37, 39, 40, 42, 43, 45, 46, 48, 49, 51, 52, 53
  528. .db  55, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 66, 67, 68, 69, 70
  529. .db  70, 71, 71, 72, 73, 73, 73, 74, 74, 74, 75, 75, 75, 75, 75, 75
  530. .db   2,  4,  6,  8,  9, 11, 13, 15, 17, 19, 20, 22, 24, 26, 28, 29
  531. .db  31, 33, 35, 36, 38, 39, 41, 43, 44, 46, 47, 49, 50, 52, 53, 54
  532. .db  56, 57, 58, 59, 60, 62, 63, 64, 65, 66, 67, 68, 68, 69, 70, 71
  533. .db  71, 72, 73, 73, 74, 74, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76
  534. .db   2,  4,  6,  8, 10, 11, 13, 15, 17, 19, 21, 23, 24, 26, 28, 30
  535. .db  32, 33, 35, 37, 38, 40, 42, 43, 45, 46, 48, 49, 51, 52, 54, 55
  536. .db  56, 58, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 69, 70, 71, 72
  537. .db  73, 73, 74, 74, 75, 75, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77
  538. .db   2,  4,  6,  8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 29, 30
  539. .db  32, 34, 36, 37, 39, 41, 42, 44, 46, 47, 49, 50, 52, 53, 55, 56
  540. .db  57, 59, 60, 61, 62, 64, 65, 66, 67, 68, 69, 70, 71, 71, 72, 73
  541. .db  74, 74, 75, 75, 76, 76, 77, 77, 78, 78, 78, 78, 78, 79, 79, 79
  542. .db   2,  4,  6,  8, 10, 12, 14, 16, 18, 20, 21, 23, 25, 27, 29, 31
  543. .db  33, 34, 36, 38, 40, 41, 43, 45, 46, 48, 49, 51, 53, 54, 55, 57
  544. .db  58, 60, 61, 62, 63, 64, 66, 67, 68, 69, 70, 71, 72, 72, 73, 74
  545. .db  75, 75, 76, 77, 77, 78, 78, 78, 79, 79, 79, 80, 80, 80, 80, 80
  546. .db   2,  4,  6,  8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 29, 31
  547. .db  33, 35, 37, 38, 40, 42, 44, 45, 47, 49, 50, 52, 53, 55, 56, 58
  548. .db  59, 60, 62, 63, 64, 65, 67, 68, 69, 70, 71, 72, 73, 74, 74, 75
  549. .db  76, 77, 77, 78, 78, 79, 79, 80, 80, 80, 81, 81, 81, 81, 81, 81
  550. .db   2,  4,  6,  8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32
  551. .db  34, 35, 37, 39, 41, 43, 44, 46, 48, 49, 51, 53, 54, 56, 57, 59
  552. .db  60, 61, 63, 64, 65, 66, 68, 69, 70, 71, 72, 73, 74, 75, 76, 76
  553. .db  77, 78, 78, 79, 80, 80, 80, 81, 81, 82, 82, 82, 82, 82, 82, 82
  554. .db   2,  4,  6,  8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32
  555. .db  34, 36, 38, 40, 41, 43, 45, 47, 48, 50, 52, 53, 55, 56, 58, 59
  556. .db  61, 62, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 77, 77
  557. .db  78, 79, 80, 80, 81, 81, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83
  558. .db   2,  4,  6,  8, 10, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33
  559. .db  35, 36, 38, 40, 42, 44, 46, 47, 49, 51, 52, 54, 56, 57, 59, 60
  560. .db  62, 63, 65, 66, 67, 68, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79
  561. .db  79, 80, 81, 81, 82, 82, 83, 83, 84, 84, 84, 84, 85, 85, 85, 85
  562. .db   2,  4,  6,  8, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33
  563. .db  35, 37, 39, 41, 43, 44, 46, 48, 50, 52, 53, 55, 56, 58, 60, 61
  564. .db  63, 64, 65, 67, 68, 69, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80
  565. .db  80, 81, 82, 82, 83, 84, 84, 84, 85, 85, 85, 86, 86, 86, 86, 86
  566. .db   2,  4,  6,  9, 11, 13, 15, 17, 19, 21, 23, 25, 28, 30, 32, 34
  567. .db  36, 38, 39, 41, 43, 45, 47, 49, 51, 52, 54, 56, 57, 59, 60, 62
  568. .db  63, 65, 66, 68, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81
  569. .db  82, 82, 83, 84, 84, 85, 85, 86, 86, 86, 87, 87, 87, 87, 87, 87
  570. .db   2,  4,  7,  9, 11, 13, 15, 17, 20, 22, 24, 26, 28, 30, 32, 34
  571. .db  36, 38, 40, 42, 44, 46, 48, 49, 51, 53, 55, 56, 58, 60, 61, 63
  572. .db  64, 66, 67, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82
  573. .db  83, 83, 84, 85, 85, 86, 86, 87, 87, 88, 88, 88, 88, 88, 88, 88
  574. .db   2,  4,  7,  9, 11, 13, 15, 18, 20, 22, 24, 26, 28, 30, 32, 35
  575. .db  37, 39, 41, 43, 44, 46, 48, 50, 52, 54, 55, 57, 59, 61, 62, 64
  576. .db  65, 67, 68, 70, 71, 72, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83
  577. .db  84, 85, 85, 86, 87, 87, 88, 88, 88, 89, 89, 89, 89, 89, 90, 90
  578. .db   2,  4,  7,  9, 11, 13, 16, 18, 20, 22, 24, 27, 29, 31, 33, 35
  579. .db  37, 39, 41, 43, 45, 47, 49, 51, 53, 54, 56, 58, 60, 61, 63, 65
  580. .db  66, 68, 69, 71, 72, 73, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84
  581. .db  85, 86, 86, 87, 88, 88, 89, 89, 90, 90, 90, 90, 91, 91, 91, 91
  582. .db   2,  5,  7,  9, 11, 14, 16, 18, 20, 23, 25, 27, 29, 31, 33, 35
  583. .db  38, 40, 42, 44, 46, 48, 50, 51, 53, 55, 57, 59, 60, 62, 64, 65
  584. .db  67, 69, 70, 71, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85
  585. .db  86, 87, 88, 88, 89, 89, 90, 90, 91, 91, 91, 92, 92, 92, 92, 92
  586. .db   2,  5,  7,  9, 11, 14, 16, 18, 21, 23, 25, 27, 29, 32, 34, 36
  587. .db  38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 59, 61, 63, 65, 66
  588. .db  68, 69, 71, 72, 74, 75, 77, 78, 79, 80, 81, 83, 84, 85, 86, 86
  589. .db  87, 88, 89, 89, 90, 91, 91, 92, 92, 92, 93, 93, 93, 93, 93, 93
  590. .db   2,  5,  7,  9, 12, 14, 16, 19, 21, 23, 25, 28, 30, 32, 34, 36
  591. .db  39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 58, 60, 62, 64, 65, 67
  592. .db  69, 70, 72, 73, 75, 76, 78, 79, 80, 81, 83, 84, 85, 86, 87, 88
  593. .db  88, 89, 90, 91, 91, 92, 92, 93, 93, 94, 94, 94, 94, 94, 94, 94
  594. .db   2,  5,  7,  9, 12, 14, 16, 19, 21, 23, 26, 28, 30, 32, 35, 37
  595. .db  39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 66, 68
  596. .db  70, 71, 73, 74, 76, 77, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89
  597. .db  90, 90, 91, 92, 92, 93, 93, 94, 94, 95, 95, 95, 95, 96, 96, 96
  598. .db   2,  5,  7, 10, 12, 14, 17, 19, 21, 24, 26, 28, 31, 33, 35, 37
  599. .db  40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 65, 67, 69
  600. .db  71, 72, 74, 75, 77, 78, 80, 81, 82, 83, 85, 86, 87, 88, 89, 90
  601. .db  91, 91, 92, 93, 94, 94, 95, 95, 96, 96, 96, 96, 97, 97, 97, 97
  602. .db   2,  5,  7, 10, 12, 14, 17, 19, 22, 24, 26, 29, 31, 33, 36, 38
  603. .db  40, 42, 44, 47, 49, 51, 53, 55, 57, 59, 61, 63, 64, 66, 68, 70
  604. .db  71, 73, 75, 76, 78, 79, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91
  605. .db  92, 93, 93, 94, 95, 95, 96, 96, 97, 97, 97, 98, 98, 98, 98, 98
  606. .db   2,  5,  7, 10, 12, 15, 17, 20, 22, 24, 27, 29, 31, 34, 36, 38
  607. .db  41, 43, 45, 47, 49, 51, 53, 56, 58, 60, 61, 63, 65, 67, 69, 71
  608. .db  72, 74, 76, 77, 79, 80, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92
  609. .db  93, 94, 95, 95, 96, 96, 97, 98, 98, 98, 99, 99, 99, 99, 99, 99
  610. .db   2,  5,  7, 10, 12, 15, 17, 20, 22, 25, 27, 29, 32, 34, 36, 39
  611. .db  41, 43, 45, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 71
  612. .db  73, 75, 76, 78, 80, 81, 83, 84, 85, 87, 88, 89, 90, 91, 92, 93
  613. .db  94, 95, 96, 96, 97, 98, 98, 99, 99,100,100,100,100,100,100,100
  614. .db   3,  5,  8, 10, 13, 15, 18, 20, 22, 25, 27, 30, 32, 35, 37, 39
  615. .db  41, 44, 46, 48, 50, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 72
  616. .db  74, 76, 77, 79, 81, 82, 84, 85, 86, 88, 89, 90, 91, 92, 93, 94
  617. .db  95, 96, 97, 98, 98, 99, 99,100,100,101,101,101,101,102,102,102
  618. .db   3,  5,  8, 10, 13, 15, 18, 20, 23, 25, 28, 30, 33, 35, 37, 40
  619. .db  42, 44, 47, 49, 51, 53, 55, 58, 60, 62, 64, 66, 68, 70, 71, 73
  620. .db  75, 77, 78, 80, 82, 83, 85, 86, 87, 89, 90, 91, 92, 93, 94, 95
  621. .db  96, 97, 98, 99, 99,100,101,101,102,102,102,102,103,103,103,103
  622. .db   3,  5,  8, 10, 13, 15, 18, 20, 23, 25, 28, 30, 33, 35, 38, 40
  623. .db  42, 45, 47, 49, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74
  624. .db  76, 78, 79, 81, 82, 84, 86, 87, 88, 90, 91, 92, 93, 94, 96, 97
  625. .db  97, 98, 99,100,101,101,102,102,103,103,103,104,104,104,104,104
  626. .db   3,  5,  8, 10, 13, 16, 18, 21, 23, 26, 28, 31, 33, 36, 38, 41
  627. .db  43, 45, 48, 50, 52, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75
  628. .db  77, 78, 80, 82, 83, 85, 87, 88, 89, 91, 92, 93, 94, 96, 97, 98
  629. .db  99, 99,100,101,102,102,103,103,104,104,105,105,105,105,105,105
  630. .db   3,  5,  8, 11, 13, 16, 18, 21, 24, 26, 29, 31, 34, 36, 39, 41
  631. .db  43, 46, 48, 51, 53, 55, 57, 60, 62, 64, 66, 68, 70, 72, 74, 76
  632. .db  78, 79, 81, 83, 84, 86, 88, 89, 90, 92, 93, 94, 96, 97, 98, 99
  633. .db 100,101,101,102,103,104,104,105,105,105,106,106,106,106,106,106
  634. .db   3,  5,  8, 11, 13, 16, 19, 21, 24, 26, 29, 31, 34, 37, 39, 42
  635. .db  44, 46, 49, 51, 53, 56, 58, 60, 62, 65, 67, 69, 71, 73, 75, 77
  636. .db  78, 80, 82, 84, 85, 87, 89, 90, 91, 93, 94, 95, 97, 98, 99,100
  637. .db 101,102,103,103,104,105,105,106,106,107,107,107,107,108,108,108
  638. .db   3,  5,  8, 11, 13, 16, 19, 21, 24, 27, 29, 32, 34, 37, 39, 42
  639. .db  44, 47, 49, 52, 54, 56, 59, 61, 63, 65, 67, 70, 72, 74, 76, 77
  640. .db  79, 81, 83, 85, 86, 88, 90, 91, 92, 94, 95, 96, 98, 99,100,101
  641. .db 102,103,104,105,105,106,107,107,107,108,108,108,109,109,109,109
  642. .db   3,  5,  8, 11, 14, 16, 19, 22, 24, 27, 30, 32, 35, 37, 40, 42
  643. .db  45, 47, 50, 52, 55, 57, 59, 62, 64, 66, 68, 70, 72, 74, 76, 78
  644. .db  80, 82, 84, 86, 87, 89, 90, 92, 93, 95, 96, 98, 99,100,101,102
  645. .db 103,104,105,106,106,107,108,108,109,109,109,110,110,110,110,110
  646. .db   3,  6,  8, 11, 14, 16, 19, 22, 25, 27, 30, 33, 35, 38, 40, 43
  647. .db  45, 48, 50, 53, 55, 58, 60, 62, 65, 67, 69, 71, 73, 75, 77, 79
  648. .db  81, 83, 85, 87, 88, 90, 91, 93, 95, 96, 97, 99,100,101,102,103
  649. .db 104,105,106,107,108,108,109,109,110,110,111,111,111,111,111,111
  650. .db   3,  6,  8, 11, 14, 17, 19, 22, 25, 28, 30, 33, 36, 38, 41, 43
  651. .db  46, 48, 51, 53, 56, 58, 61, 63, 65, 67, 70, 72, 74, 76, 78, 80
  652. .db  82, 84, 86, 87, 89, 91, 92, 94, 96, 97, 98,100,101,102,103,104
  653. .db 105,106,107,108,109,109,110,111,111,111,112,112,112,112,113,113
  654. .db   3,  6,  8, 11, 14, 17, 20, 22, 25, 28, 31, 33, 36, 39, 41, 44
  655. .db  46, 49, 52, 54, 56, 59, 61, 64, 66, 68, 70, 73, 75, 77, 79, 81
  656. .db  83, 85, 87, 88, 90, 92, 93, 95, 97, 98, 99,101,102,103,104,105
  657. .db 107,107,108,109,110,111,111,112,112,113,113,113,114,114,114,114
  658. .db   3,  6,  9, 11, 14, 17, 20, 23, 25, 28, 31, 34, 36, 39, 42, 44
  659. .db  47, 50, 52, 55, 57, 60, 62, 64, 67, 69, 71, 73, 76, 78, 80, 82
  660. .db  84, 86, 88, 89, 91, 93, 94, 96, 98, 99,100,102,103,104,106,107
  661. .db 108,109,109,110,111,112,112,113,113,114,114,115,115,115,115,115
  662. .db   3,  6,  9, 11, 14, 17, 20, 23, 26, 28, 31, 34, 37, 39, 42, 45
  663. .db  47, 50, 53, 55, 58, 60, 63, 65, 67, 70, 72, 74, 76, 79, 81, 83
  664. .db  85, 87, 88, 90, 92, 94, 95, 97, 99,100,102,103,104,105,107,108
  665. .db 109,110,111,111,112,113,114,114,115,115,115,116,116,116,116,116
  666. .db   3,  6,  9, 12, 14, 17, 20, 23, 26, 29, 32, 34, 37, 40, 43, 45
  667. .db  48, 51, 53, 56, 58, 61, 63, 66, 68, 70, 73, 75, 77, 79, 81, 84
  668. .db  86, 87, 89, 91, 93, 95, 96, 98,100,101,103,104,105,107,108,109
  669. .db 110,111,112,113,113,114,115,115,116,116,117,117,117,117,117,117
  670. .db   3,  6,  9, 12, 15, 18, 20, 23, 26, 29, 32, 35, 37, 40, 43, 46
  671. .db  48, 51, 54, 56, 59, 61, 64, 66, 69, 71, 73, 76, 78, 80, 82, 84
  672. .db  86, 88, 90, 92, 94, 96, 97, 99,101,102,104,105,106,108,109,110
  673. .db 111,112,113,114,115,115,116,117,117,117,118,118,118,118,119,119
  674. .db   3,  6,  9, 12, 15, 18, 21, 24, 26, 29, 32, 35, 38, 41, 43, 46
  675. .db  49, 52, 54, 57, 59, 62, 65, 67, 69, 72, 74, 76, 79, 81, 83, 85
  676. .db  87, 89, 91, 93, 95, 97, 98,100,102,103,105,106,107,109,110,111
  677. .db 112,113,114,115,116,116,117,118,118,119,119,119,120,120,120,120
  678. .db   3,  6,  9, 12, 15, 18, 21, 24, 27, 30, 33, 35, 38, 41, 44, 47
  679. .db  49, 52, 55, 57, 60, 63, 65, 68, 70, 73, 75, 77, 80, 82, 84, 86
  680. .db  88, 90, 92, 94, 96, 98, 99,101,103,104,106,107,109,110,111,112
  681. .db 113,114,115,116,117,118,118,119,119,120,120,121,121,121,121,121
  682. ; ksztalt przebiegu dla 50.5..58.0Hz [1.15*sin(x)+0.15*sin(3*x)]
  683. .db   3,  6,  9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 44, 47
  684. .db  50, 53, 56, 58, 61, 63, 66, 68, 71, 73, 76, 78, 80, 82, 85, 87
  685. .db  89, 91, 93, 94, 96, 98,100,101,103,104,106,107,108,110,111,112
  686. .db 113,114,115,116,116,117,118,118,119,119,120,120,120,120,120,121
  687. .db   3,  6,  9, 12, 15, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49
  688. .db  52, 54, 57, 60, 63, 65, 68, 70, 73, 75, 77, 80, 82, 84, 86, 88
  689. .db  90, 92, 94, 96, 98, 99,101,102,104,105,107,108,109,110,111,113
  690. .db 113,114,115,116,117,117,118,119,119,119,120,120,120,120,120,121
  691. .db   3,  6,  9, 13, 16, 19, 22, 26, 29, 32, 35, 38, 41, 44, 47, 50
  692. .db  53, 56, 59, 62, 64, 67, 69, 72, 74, 77, 79, 81, 84, 86, 88, 90
  693. .db  92, 94, 96, 97, 99,101,102,104,105,106,108,109,110,111,112,113
  694. .db 114,115,116,116,117,118,118,119,119,119,120,120,120,120,120,121
  695. .db   3,  6, 10, 13, 17, 20, 23, 27, 30, 33, 36, 39, 43, 46, 49, 52
  696. .db  55, 58, 60, 63, 66, 69, 71, 74, 76, 79, 81, 83, 85, 87, 89, 91
  697. .db  93, 95, 97, 99,100,102,103,105,106,107,109,110,111,112,113,114
  698. .db 115,115,116,117,117,118,118,119,119,120,120,120,120,120,120,121
  699. .db   3,  7, 10, 14, 17, 21, 24, 27, 31, 34, 37, 41, 44, 47, 50, 53
  700. .db  56, 59, 62, 65, 68, 70, 73, 75, 78, 80, 83, 85, 87, 89, 91, 93
  701. .db  95, 97, 98,100,102,103,105,106,107,108,110,111,112,113,114,114
  702. .db 115,116,117,117,118,118,119,119,119,120,120,120,120,120,120,121
  703. .db   3,  7, 10, 14, 18, 21, 25, 28, 32, 35, 39, 42, 45, 48, 52, 55
  704. .db  58, 61, 64, 67, 69, 72, 75, 77, 80, 82, 84, 87, 89, 91, 93, 95
  705. .db  97, 98,100,102,103,104,106,107,108,109,111,112,112,113,114,115
  706. .db 116,116,117,117,118,118,119,119,120,120,120,120,120,120,120,121
  707. .db   3,  7, 11, 14, 18, 22, 25, 29, 33, 36, 40, 43, 46, 50, 53, 56
  708. .db  59, 62, 65, 68, 71, 74, 76, 79, 81, 84, 86, 88, 90, 92, 94, 96
  709. .db  98,100,101,103,104,106,107,108,109,110,111,112,113,114,115,116
  710. .db 116,117,117,118,118,119,119,119,120,120,120,120,120,120,120,121
  711. .db   3,  7, 11, 15, 19, 22, 26, 30, 34, 37, 41, 44, 48, 51, 54, 58
  712. .db  61, 64, 67, 70, 73, 75, 78, 81, 83, 86, 88, 90, 92, 94, 96, 98
  713. .db 100,101,103,104,106,107,108,109,111,112,112,113,114,115,116,116
  714. .db 117,117,118,118,119,119,119,120,120,120,120,120,120,120,120,121
  715. .db   3,  7, 11, 15, 19, 23, 27, 31, 35, 38, 42, 45, 49, 52, 56, 59
  716. .db  62, 66, 69, 72, 74, 77, 80, 82, 85, 87, 90, 92, 94, 96, 98, 99
  717. .db 101,103,104,106,107,108,109,111,112,113,113,114,115,116,116,117
  718. .db 117,118,118,119,119,119,119,120,120,120,120,120,120,120,120,121
  719. .db   4,  8, 12, 16, 20, 24, 28, 32, 35, 39, 43, 47, 50, 54, 57, 61
  720. .db  64, 67, 70, 73, 76, 79, 82, 84, 87, 89, 91, 93, 96, 97, 99,101
  721. .db 103,104,106,107,108,110,111,112,113,114,114,115,116,116,117,117
  722. .db 118,118,119,119,119,119,120,120,120,120,120,120,120,120,120,121
  723. .db   4,  8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 55, 59, 62
  724. .db  65, 69, 72, 75, 78, 81, 83, 86, 88, 91, 93, 95, 97, 99,101,103
  725. .db 104,106,107,109,110,111,112,113,114,115,115,116,117,117,118,118
  726. .db 118,119,119,119,120,120,120,120,120,120,120,120,120,120,120,121
  727. .db   4,  8, 12, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 60, 64
  728. .db  67, 70, 73, 77, 79, 82, 85, 88, 90, 93, 95, 97, 99,101,103,104
  729. .db 106,107,109,110,111,112,113,114,115,116,116,117,117,118,118,119
  730. .db 119,119,119,120,120,120,120,120,120,120,120,120,120,120,120,121
  731. .db   4,  8, 13, 17, 21, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62, 65
  732. .db  69, 72, 75, 78, 81, 84, 87, 89, 92, 94, 96, 99,101,103,104,106
  733. .db 107,109,110,111,112,114,114,115,116,117,117,118,118,119,119,119
  734. .db 120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,121
  735. .db   4,  9, 13, 18, 22, 26, 31, 35, 39, 43, 48, 52, 55, 59, 63, 67
  736. .db  70, 73, 77, 80, 83, 86, 88, 91, 94, 96, 98,100,102,104,106,108
  737. .db 109,110,112,113,114,115,116,116,117,118,118,119,119,119,120,120
  738. .db 120,120,120,120,120,121,121,121,121,121,121,121,121,121,121,121
  739. .db   4,  9, 13, 18, 23, 27, 31, 36, 40, 44, 49, 53, 57, 61, 64, 68
  740. .db  72, 75, 78, 81, 85, 87, 90, 93, 95, 98,100,102,104,106,108,109
  741. .db 111,112,113,114,115,116,117,118,118,119,119,120,120,120,120,120
  742. .db 121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121
  743. .db   4,  9, 14, 18, 23, 28, 32, 37, 41, 45, 50, 54, 58, 62, 66, 70
  744. .db  73, 77, 80, 83, 86, 89, 92, 95, 97, 99,102,104,106,108,109,111
  745. .db 112,113,115,116,117,117,118,119,119,120,120,120,121,121,121,121
  746. .db 121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121
  747.  
  748.         .eseg
  749.         .org 0x000
  750. .db 0                                 ; pomin
  751. .db 19                                ; 10Hz   czest.rozruchowa (FREQ+1)/2[Hz]
  752. .db 3                                 ; 25Hz/s rampa przysp.:   100/(ACCEL+1)[Hz/s]
  753. .db 9                                 ; 10Hz/s rampa hamowania: 100/(DECEL+1)[Hz/s]
  754. ;****** Koniec programu **************************************************
*źródło: CD EP 9/2012
EP pisze:Czasem odnoszę wrażenie, że umiejętność programowania nawet nieskomplikowanych mikrokontrolerów w asemblerze jest w zaniku, dlatego chciałbym zaprezentować pętlę programu falownika w całości. Program jest stosunkowo krótki i bogato skomentowany, więc Czytelnik znający podstawy asemblera, niekoniecznie dla AVR, nie powinien mieć problemów z analizą programu. Projekty falowników, nawet takich prostych jak nasz, są stosunkowo trudno dostępne, więc w materiałach pomocniczych zamieściliśmy pełny listing programu.
PS
W artykule jest moduł v1, a ja mam v2 - nie wiem czym to się do końca różni. Patrząc na te moduły mój jest zbudowany na jednym PCB, a v1 ma osobne PCB dla wysokiego napięcia i osobno jest moduł z uC, sterujący.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
Oldman
Posty: 61
Rejestracja: 19 cze 2019, 11:15

Re: Sterowanie mocą i/lub obrotami

Post autor: Oldman » 08 sty 2020, 12:03

Według listingu widać, że nastawa potencjometru odczytywana jest przez ADC (linia 138), bo w końcu jak inaczej miało by to być :)
Żeby być na 100% pewnym to możesz wylutować potencjometr a na PB.2 podawać zewnętrzne napięcie z zakresu 0-5V. Tylko uwaga: brak izolacji od sieci!!! Więc najlepiej będzie wykorzystać jako sterowanie np. bateryjki 1,5V. Podłącz jedną, potem dwie a następnie trzy. Obroty pompki powinny się zmieniać. Jeżeli to zadziała to potem eksperymenty z PWM. Choć uważam, że szkoda czasu na zabawę z bateryjkami i od razu testowałbym działanie układu wg. mojego schematu.
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Sterowanie mocą i/lub obrotami

Post autor: niveasoft » 08 sty 2020, 15:12

Na pewno da się tak zrobić bo od dawna używano PWM w AVR np do cyfrowego sterowania kontrastem wyświetlaczy LCD (można się podłączyć pod pin V0 zamiast potencjometru).
Na tej samej zasadzie działają DAC, tyle że to specjalnie bardzo szybkie PWM.
Martwię się tylko o jedno. Czy taki dwumetrowy kabel z PWM`em nie będzie "siał" w jakimś paśmie jak jakaś antena :D
Testuj :D

Nie chcę specjalnie konstrukcji utrudniać, ale czasem liczy się EMI :P
Miałem kiedyś zegar zdalnie sterowany na wyświetlaczach siedmiosegmentowych i było ich tam kilka (chyba sześć) i trzeba to było multipleksować. Te multileksowanie wprowadzało takie zakłócenia, że długo szukałem dlaczego odbiornik na 433MHz nie odbiera :D (oczywiście dochodzi baudrate itd..)
Uważam więc, że wszystkie "kluczowane" obwody powinny być jak najkrótsze. Nawet zwykły przewód będzie się zachowywał jak dławik im wyższa będzie prędkośc kluczowania PWM.
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Sterowanie mocą i/lub obrotami

Post autor: niveasoft » 08 sty 2020, 16:27

No a tak BTW i dla beki :D
Pamiętacie jak w programie "Kocham Cię Polsko", albo podobnym (nie pamiętam), zawodnicy odpowiadając na pytania przerzucali miedzy sobą jak gorący kartofel pudełko które po czasie ma wybuchnąć?

Ktoś kiedyś poprosił mnie o napisanie softu do takiego podobnego. Można wybrać czas do odliczania. Ledy migają tym szybciej im mniej czasu zostało. W końcowej fazie uwalniany jest dym a na samym końcu następuje boom :D

Film jest nakręcony przez tego kolegę (muszę Mu kiedyś nagadać jak trzymać telefon) z najkrótszym czasem żeby filmu nie przedłużać :D

Ahahahaha :D
[media]https://drive.google.com/file/d/1ZT4kPV ... view[media]
Awatar użytkownika
Jacek
Posty: 384
Rejestracja: 25 kwie 2016, 19:14

Re: Sterowanie mocą i/lub obrotami

Post autor: Jacek » 08 sty 2020, 16:48

Witam - dobre :D
pozdrawiam Jacek.
Awatar użytkownika
Oldman
Posty: 61
Rejestracja: 19 cze 2019, 11:15

Re: Sterowanie mocą i/lub obrotami

Post autor: Oldman » 08 sty 2020, 17:41

Zakłócenia można ograniczyć stosując kabel ekranowany.
ODPOWIEDZ