ScratchData LogoScratchData
Back to onara_go's profile

RAIL DOCTOR 事業用車両 VVVF

ONonara_go•Created April 21, 2020
RAIL DOCTOR 事業用車両 VVVF
3
3
74 views
View on Scratch

Instructions

日立IGBTっぽいのです ラジオで録音しました。 変調パターン: 非同期モード1200Hz~2000Hz(加速時) 非同期モード800Hz~2000Hz(減速時) 同期モード 15パルス 同期モード 9パルス 同期モード 7パルス 同期モード 5パルス(減速時は3パルス) 同期モード 1パルス

Description

Arduino unoにて波形を生成 コード: #include <avr/io.h> #include <avr/interrupt.h> #define U_pin 5 #define V_pin 6 #define W_pin 7 #define threePhaseMODE 2 #define tableLegth 64 byte macroMODE = 0; byte MINPOWERSPEED = 4; float MINPOWERSIZE = 0.0017; float Kfrq = 0; float Vout = 0; float Hz = 0; float u_sin_table[199]; volatile float sin_operator = 0; volatile float tri_operator = 0; ISR(TIMER0_COMPA_vect) { if (sin_operator > 200)sin_operator = 0; sin_operator += Hz * 200 * 0.0002; } void setup() { cli(); TCCR0A = 0b10000010; TCCR0B = 0b00000010; TCCR1A = 0b00100001; TCCR1B = 0b00010010; TIMSK0 = 0b00000010; OCR0A = 65535; pinMode (U_pin, OUTPUT); pinMode (V_pin, OUTPUT); pinMode (W_pin, OUTPUT); pinMode (10, OUTPUT); Serial.begin(2000000); //U tables for (int i = 0; i <= 199; i++) { u_sin_table[i] = (sin(radians(i * 360 / 200)) + 1) / 2; Serial.print(sin_operator); Serial.print("Starting..."); Serial.println(i); } sei(); } void loop () { TCCR1A = 0b00100001; TCCR1B = 0b00010010; OCR1A = (unsigned int)(1000000 / Kfrq); OCR1B = (unsigned int)(1000000 / Kfrq * u_sin_table[round(sin_operator)] * Vout); if (macroMODE == 0) { if (Hz > MINPOWERSPEED) { Hz += 0.0017; } else { Hz = Hz + 0.001; } if (Hz >= 175) { macroMODE = 1; } } if (macroMODE == 1) { Hz -= 0.0015; if (Hz <= 5) { Hz = Hz - 0.0001; if (Hz <= 0) { macroMODE = 0; } } } if (Hz > 0 && Hz < 4)Vout = 0.032; if (Hz > 4 && Hz < 72)Vout = (Hz) * 0.953 / 68; if (Hz > 72 && Hz < 100)Vout = 0.985; if (Hz > 140)Vout = 1; if (macroMODE == 0) { if ((Hz > 0) && (Hz < 20))Kfrq = random(1100, 1300); if ((Hz > 20) && (Hz < 50))Kfrq = random((1100 + (Hz - 20) * 800 / 30), (1300 + (Hz - 20) * 800 / 30)); if ((Hz > 50) && (Hz < 55))Kfrq = random(1900, 2100); if ((Hz > 55) && (Hz < 62))Kfrq = Hz * 15 * threePhaseMODE; if ((Hz > 62) && (Hz < 70))Kfrq = Hz * 9 * threePhaseMODE; if ((Hz > 70) && (Hz < 72))Kfrq = Hz * 7 * threePhaseMODE; if ((Hz > 72) && (Hz < 140))Kfrq = Hz * 5 * threePhaseMODE; if (Hz > 140)Kfrq = Hz * threePhaseMODE; } else { if ((Hz > 0) && (Hz < 5))Kfrq = 800; if ((Hz > 5) && (Hz < 50))Kfrq = random((1100 + (Hz - 20) * 800 / 30), (1300 + (Hz - 20) * 800 / 30)); if ((Hz > 50) && (Hz < 55))Kfrq = random(1900, 2100); if ((Hz > 55) && (Hz < 62))Kfrq = Hz * 15 * threePhaseMODE; if ((Hz > 62) && (Hz < 70))Kfrq = Hz * 9 * threePhaseMODE; if ((Hz > 70) && (Hz < 72))Kfrq = Hz * 7 * threePhaseMODE; if ((Hz > 72) && (Hz < 140))Kfrq = Hz * 3 * threePhaseMODE; if (Hz > 140)Kfrq = Hz * threePhaseMODE; } }

Project Details

Project ID387254051
CreatedApril 21, 2020
Last ModifiedApril 22, 2020
SharedApril 21, 2020
Visibilityvisible
CommentsAllowed

Remix Information

Parent ProjectView Parent
Root ProjectView Root