 | Antena 02.12.2024 08:00
|
| gromit napsal(a): Společné body sin(50Hz) a saw(10kHz):
y(t)=3.5⋅sin(2π⋅50⋅t)+6.5
y(t)=3.5⋅(2⋅ tmodT/T −1)+6.5 , T=1/10000
Kód v Pythonu pro výpočet společných bodů a případné... |
Ahoj
wow
máš to daleko sofistikovanější program, než jsem stvořil o vikendu.
Já pilu počítal jako jednotlivé úsečky...
osu y mám jako proud s maximem 10A
osu x mám v mikrosekundách
A hlavně pilu mám náběžnou hranu od bodu [0;0] do bodu [0;10] a klesající část první periody pily mám z bodu [0;10] do bodu [0,100us] atd...
pila nemůže (pro můj účel) mít osu x "posunutou" do bodu [0;6,5], průběh pily nemůže být nahoru a pak dolů ale jenom nahoru od osy x výše popsaným způsobem, a nebo špatně chápu tvou rovnici y(t)=3.5⋅(2⋅ tmodT/T −1)+6.5, to 6,5 je přece posun bodu [0;0] nahoru ve směru osy y do bodu [0;6,5]
... fety spínají ve spínacím režimu ve smyslu od nuly do 10A jinak ne...
Ale to nevadí, jako řešení v pythonu geniální až tak moc, že mu nerozumím a nedokáži to upravit pro můj účel. Mám to naprogramované po svém...
Ten program bych v budoucnu potřeboval i modifikovat, různě posunutá sinusovka, vyšší pila apod... ale to bych nedal...hlavně ty derivace...
Děkuji za upozornění, že ve vrcholu sinusovky a pily se to potká jednou, já na to zapomněl, řešení je jednoduché, vrchol se jednoduše ignoruje, nedochází ke změně spínání, nedochází ke změně stavu tranzistorů.
A nezapoměň je levý a pravý primár, je levá a pravá sinusovka, ta druhá je posunuta o Pí. ... do výpočtu se musí zahrnout i ta druhá. Až máme jednotlivé průsečíky, python musí sám vygenerovat program typu
digitalWrite(pinP,HIGH);
digitalWrite(pinL,HIGH);
delayMicroseconds(32);
digitalWrite(pinL,LOW);
delayMicroseconds(5); //
digitalWrite(pinP,LOW);
delayMicroseconds(10);
Těch průsečíků jedné periody sinusu s pilou je 400 a druhého sinusu s pilou dalších 400
A tyto společné body jsou časy pro sepnutí fetu. Ručně se to psát nedá, proto python vygeneruje program pro arduino. Časy se musí seřadit za sebou, aby to spínalo správně, aby byly jednotlivé příkazy pěkně za sebou a spínalo to do primárů sinus a ne blbost... u arduina trvá provedení instrukce digitalwrite 3,5 mikrosekundy, u stm jsem časový údaj o délce času provedení digitalwrite nenašel.
Podle mě pomocí PWM to v arduinu nejde napsat, protože se neustále mění střída.
Dík A. |
|