SBC6502 - 22 - software-Basic-programs. Odporový delič - Resistance divider.

By Administrator at marca 28, 2019 20:00
Filed Under: SBC6502

 

+ calculator for "x" parallel resistor
or
"x" serial capacity

+

- resistance divider for 2x R or 3x R -

 

Program pre výpočet pre viacero paralelne radených odporov, tak isto je to program pre výpočet sériovo radených kapacít:

 

Je to taká moja blbinka. Už som síce napísal programy pre 2 radené odpory a kondenzátory, ale toto umožňuje radiť a vypočítať väčší počet súčiastok v zapojení.

Momentálne nastavený výpočet tu v programe funguje v rozsahu 2÷10 radených odporov (alebo kapacít).


Táto horná hranica je daná iba kontrolou max. vstupnej hodnoty na riadku 204, ak tento riadok zrušíte tak sa rozsah zvýši - ale počítať už s takým veľkým počtom radených súčiastok fakt zaváňa návštevou špecializovaného odborného pracoviska ...


Uvedený program by mal bez problémov bežať aj na iných 8 bitových počítačoch a na ich Basicu - akurát treba vynechať riadok č.10, ktorý je skutočne špecifický iba pre SBC6502 - maže sa ním obrazovka - ? CHR$(12) - je to vlastne iba ekvivalent príkazu CLS /ak bežíte v Hypertermináli/ a a príkaz POKE 15,80 nastavuje výstup cez terminál na hodnotu = 80 znakov v riadku - ten ale nie je bezpodmienečne potrebný.


Listing programu:


6 REM  Single Board Computer 6502
10 ? CHR$(12):POKE 15,80
11 CLEAR
12 ? " __________________________"
13 ? "       Calculator for"
14 ? "    x parallel resistor"
15 ? "            or"
16 ? "     x serial capacity
17 ? "        (c) 2018 Igi"
18 ? " __________________________"
20 ?:? " R=to resist  C=to capacity":?
40 ? " ";:INPUT A$
44 IF A$="R" THEN B$="parallel resist":C$="resistor no.":GOTO 100
48 IF A$="C" THEN B$="serial capacity":C$="capacity no.":GOTO 100
52 ? "             R or C !"
55 GOTO 20                                                                       
100 ?:? "          Input=0=End !":?
200 ? " Number of ";:? B$
202 ? " Range (2-10) :";:INPUT I
204 IF I=1 OR I>10 THEN ? " Call your psychiatrist ...":END
205 IF I=0 THEN 500
210 T=T+1:IF T=I+1 THEN GOTO 11
211 IF T=1 THEN ? " Value:"
212 ? " ";:? C$;T;:INPUT W
215 IF T=1 THEN A=W:GOTO 210
217 IF T=2 THEN B=W:GOSUB 400:GOTO 210
218 IF T>=3 THEN A=Q
219 IF T>=3 THEN B=W:GOSUB 400:GOTO 210
220 STOP
400 REM -------------------------------
405 IF A=0 THEN 500
410 IF B=0 THEN 500
430 C=A*B:D=A+B:Q=(C/D)
445 IF T=I THEN ? "":? " Result=";:? Q:? " __________________________"
460 RETURN
500 ?:? " -- END program --":END


Vlastný výpočet v programe prebieha postupne, už počas zadávania vstupných čísiel, nie až po načítaní všetkých hodnôt. 

 

Potrebné je dodržať túto filozofiu - zadávanie hodnôt sa riadi najmenšou zadávanou hodnotou, potom pri výpočte nebude žiaden problém.


Príklady:

 

Potrebujeme vypočítať 3 paralelne zapojené odpory - 100Ω, 10kΩ a 100kΩ.

Zadáme číslo 1 - 100 (Ohm)

           číslo 2 - 10000 (Ohm)

           číslo 3 - 100000 (Ohm)

Čiže zadávame všetko v Ohm - výsledok bude v hodnotách Ohm.


Potrebujeme vypočítať 3 paralelne zapojené odpory - 10k, 27k, 3k3.

Zadáme číslo 1- 10

           číslo 2 - 27

           číslo 3 - 3.3

Zadávame v kOhm - výsledok bude potom v hodnotách kOhm.


Potrebujeme vypočítať 3 sériovo zapojené kondenzátory 6.8pF, 100pF a 1nF.

Zadáme číslo 1 - 6.8 (pF)

           číslo 2 - 100 (pF)

           číslo 3 - 1000 (pF)

Zadávame všetko v pF -výsledok bude v pF.


Analogicky to platí aj pre výpočty iných hodnôt, len si treba pri zadávaní uvedomiť aké hodnoty treba vkladať.

 

Teraz ešte vlastný program priamo na stiahnutie:

X-paralel resistor-serial-capacity_bas.txt (1,16 kb)


Jasne, dá sa to urobiť aj inak - a asi aj lepšie. Nie je tu nejaký rozpis prečo je to tu tak a tam zase inak, tento program nemá slúžiť na výuku. K takémuto výsledku som dospel pri jednej dlhej jesennej večeri na chalupe. Počíta to, dostanete správne výsledky a mňa baví že to beží na SBC6502.

Zadanie nulovej hodnoty odporu alebo nulovej kapacity počas zadávania údajov má za následok okamžité ukončenie programu.


Ak chcete tento program vylepšiť, no problem !

Mimochodom - na riadok 220 by sa to v programe nemalo dostať ani náhodou, t.j. je možné ho zmazať. Bol použitý pri vývoji programu, potreboval som program v istej fázi stopnúť a skontrolovať si čo práve robil (obsah premenných).
___________________________________________________________

 

Odporový delič pre 2 odpory - resistance divider.


Programové vybavenie ktoré nám má uľahčiť rozhodovanie či to riešiť takto, alebo radšej na danom mieste použijeme odpor a Zenerovu diódu - to sa potom hodí ak treba celkom presne dodržať potrebné výstupné napätie a aj treba dodať väčší prúd. Jedná sa o ďalší malý program ktorý sa občas pri navrhovaní niektorých zapojení môže viac ako hodiť - teda ak je k dispozícii.

Jedná sa tu o výpočet tzv. jednoduchého, nezaťaženého odporového deliča s 2 odpormi, občas sa to naozaj hodí.

Základný vzorec pre výpočet výstupného napätia na odpore R2:



Vzorec poskytuje len tento jeden údaj, lenže občas je potreba o tom deliči vedieť čo najviac informácií a tak som si napísal verziu výpočtu k obrazu svojmu, kde je tých výstupných informácií na displeji k dispozícii o poznanie viac.

Tu prikladám obrázok ktorý je určený k priloženému programu, vypočet je platný pre DC/AC vstupné napätie, jediná zmena je je že AC tečie prúd obidvomi smermi cez odpory, pritom pri DC zákonite tečie iba jedným smerom.



Ale ako to už v živote býva, občas potrebujeme aj ďalšie údaje, ako je napríklad priečny prúd týmto deličom, celková záťaž, jednotlivá záťaž na odporoch. A tak som napísal malý program pre SBC6502, na tom krpcovi sa fakt dobre skúšajú všetky možné veci. A potom že takéto SBC mašiny nemá zmysel držať pri živote, má ! Program nie je určený na výuku tak ako bol napísaný, hlavným cieľom bola funkčnosť programu.

Tu je jasne vidieť že aj ja si postupne osvojujem tento Basic, pretože sa mi podarilo skrátiť zápisy v ktorých sa vypisuje premenná s textom v jednom riadku (keď je text pred ňou a aj za ňou). Hja, budem sedieť u SBC6502 častejšie ... Laughing

Tento program poskytuje všetky potrebné údaje aby sme vedeli navrhnúť odporový delič a teda aj vedeli aj záťažové pomery, t.j. aby sme nedali na delič odpor na zaťaženie 0.5W ak tam treba odpor trebárs na 2W.

Program počíta prúd v mA a príkon v miliwattoch, ja s tým problém nemám, kto potrebuje zmenu v programe na A a Watty tak nech si urobí príslušnú úpravu:


41 ? " R1+R2="U*I/1000;"watts"
42 ? " R1="C*I/1000;"watts"
43 ? " R2="D*I/1000;"watts"


Výpis na obrazovku bude potom I=I/1000 a P=P/1000 (treba takto nastaviť výpis v programe už na A a W, čiže prepisovali by sa riadky 41 až 43).

 

Ak do výpočtu zadáte ktorýkoľvek vstupný údaj =0 (či už napätie, alebo R1, R2) príde k ukončeniu programu.


Program:


01 REM Igi(c)2019
02 ? CHR$(12):REM CLS
04 ? " U=input in Volts"
05 ? " R1,R2 input in kiloOhm"
06 ? " Example:  4M7=4700,M47=470,47k=47,4k7=4.7"
07 ? " 470 Ohm=0.47,47 Ohm=0.047, 4.7 Ohm=0.0047"
10 CLEAR
12 ? " __________________________________"
15 ? " Resistance R1+ R2 divider":? :REM A=R1, B=R2
16 ? " U=";:INPUT U:IF U=0 THEN 95
18 ? " R1=";:INPUT A:IF A=0 THEN 95
19 ? " R2=";:INPUT B: IF B=0 THEN 95
20 ? " ________________"
21 ? " U="U;"Volts"
22 ? " R1="A;"kOhms"
23 ? " R2="B;"kOhms"
25 R=A+B: REM R=R1+R2
30 I=U/R:? " I="I;"mA":REM current
35 ? " UR1="A*I;"V":? " UR2="B*I;"V"
36 C=A*I:D=B*I:REM C=U1(res. R1), D=U2(res. R2)
40 ? " Total power:"
41 ? " R1+R2="U*I;"miliwatts"
42 ? " R1="C*I;"miliwatts"
43 ? " R2="D*I;"miliwatts"
90 GOTO 10: REM new start program
95 ?: ? " Input=0=End program":END

Program je urobený tak že sa dá bez najmenších problémov preniesť aj na iné známe typy 8 bitových počítačov (mimo riadku č.2 ktorý je špecifický pre SBC6502 kde sa ním nahradzuje príkaz CLS ktorý SBC6502 nemá a funguje vyslovene pre pripojenie cez Hyperterminál):

resistance divider.txt (838,00 bytes)

 

A teraz si už poďme pozrieť ako to vyzerá v terminálovom okne:

 

Začiatok programu.


Výpočet pre: U=12V, R1=1k, R2=1k.


Výpočet pre: U=20V, R1=3k3, R2=1k2.

____________________________________________________

04.09.2022

Nasleduje výpočet nezaťaženého odporového deliča pre 3 odpory, občas treba robiť aj takéto výpočty. Zase platí - ak je zadaný niektorý vstupný údaj =0 tak program okamžite ukončí svoju činnosť. Program som tak isto napísal jeden večer na chalupe.


Odporový delič pre 3 odpory - Resistance divider.


 

Program:

 

01 POKE 15,80:? CHR$(12);:CLEAR:REM Igi(c)2022
03 ? "      Resistance R1+R2+R3 divider"
04 ? " U=input in Volts, R1,R2,R3 input in kOhm"
06 ? " Example: 4M7=4700,M47=470,47k=47,4k7=4.7"
07 ? " 470 Ohm=0.47,47 Ohm=0.047,4.7 Ohm=0.0047"
12 ? " _________ Input=0=End program ___________"
13 INPUT " U =";U:IF U=0 THEN 46
14 INPUT " R1=";A:IF A=0 THEN 46
15 INPUT " R2=";B:IF B=0 THEN 46
16 INPUT " R3=";C:IF C=0 THEN 46
20 ? " __":R=A+B+C:I=U/R
21 ? " Summary:":? " Uinp="U;"Volts":? " I="I;"mA"
22 ? " R1="A;"kOhm";" ";A*I*I;"miliwatts"
23 ? " R2="B;"kOhm";" ";B*I*I;"miliwatts"
24 ? " R3="C;"kOhm";" ";C*I*I;"miliwatts"
40 ? " Total power: "U*I;"miliwatts"
42 ? " UR1="A*I;"V"," UR2="B*I;"V"," UR3="C*I;"V"
43 ? " U1out="U-A*I"V"," U2out="U-A*I-B*I"V"
44 ?:? SPC(7)" (N)ew or (Q)uit program";:INPUT A$
45 IF A$="N" THEN RUN
46 END


resistance divider R1_R2_R3.txt (842,00 bytes)


Úvodná obrazovka programu pre odporový delič s 3 odpormi.


Výpočet konkrétneho deliča s odpormi 3.3k, 10k a 3k3, napätie je 5V.


Druhá ukážka výpočtu, napätie 10V, odpory 1k, 4k7 a 3.3k - len sem pridávam upozornenie že som časom čiastočne zmenil zobrazenie programu, takže sa mierne líši od tu uvedeného zobrazenia.

 

Ešte jedna vec - zápis sa dá ďalej upraviť /"vylepšiť"/, napríklad takouto zmenou:

22 ? " R1="A;"kOhm";" ";A*I^2;"miliwatts"
23 ? " R2="B;"kOhm";" ";B*I^2;"miliwatts"
24 ? " R3="C;"kOhm";" ";C*I^2;"miliwatts"

___________________________________________________________

Návrat do všetkých pokračovaní o SBC6502:

http://blog.3b2.sk/igi/post/SBC6502-0-UvodIntroduction.aspx

_____________________________________________________

Vaše hodnotenie, Rate post:

Comments

28. 3. 2019 20:10:17 #

trackback

Directory SBC6502

Directory SBC6502

Igi blog |

Info o autorovi

Volám sa Igor Gramblička, bydlisko: Bratislava, Slovakia. Môj nick: Igi. Blog je o mojich záujmoch, predtým som pracoval ako IT špecialista na počítačové siete a redakčné systémy pre viaceré denníky - až som pred rokmi nakoniec v jednom z nich zakotvil a kde som to potiahol až do konca mojej profesnej kariéry.

Rok, mesiac, počet článkov: