HobbyCNC fórum
FTP tárhely: http://cnctar.hobbycnc.hu v0.9.6 Régi HobbyCNC oldal: http://archiv.hobbycnc.hu

Új regisztráció / Átregisztráció a régi fórumról
    
   


Elektronika

Léptetőmotorok, vezérlőbeállítások

 

Időrend:
Oldal 32 / 492 Ugrás ide:
Sorok:
|◄ Első  ◄ Előző   28  29  30  31  32  33  34  35  36   Következő ►  Utolsó ►|

  Fórum főoldal  |  A lap aljára

Törölt felhasználó    2021-01-20 09:49:41 [23144]

Az egy tévhit, hogy induktív terheléskor a triac vagy tirisztor feszültség nullátmenetnél kikapcsol. Nem fog, tovább vezet x ideig, ameddig az árama nem csökken a tartóáram alá. Meglehetősen bonyolult és behatárolt dolgok zajlanak itt le a fázis eltolódások miatt (pl az előbbi ok miatt bizonyos fázisszög tartományban be se lehet gyújtani a félvezetőt. Ezért használhatatlanok sok esetben a szilárdtest relék is bizonyos induktív körökben.

Előzmény: Szalai György, 2021-01-20 08:59:31 [23143]


Szalai György | 9490    2021-01-20 08:59:31 [23143]

Gyújtásszög vezérléskor a hálózati feszültséghullám nullaátmenet után az általad beállított idővel a triak begyújt és a következő nullaátmenetkor kikapcsol.
Induktív fogyasztó esetén, (transzformátor) kikapcsoláskor túlfeszültség tüske keletkezik, ami a triak átütését okozza.
Ez ellen védheted a triakot például a trafóval párhuzamosan kötött varisztorral.
A másik különbség a gyújtókör hangolásában van, azon esetedben szerintem nem tudsz változtatni.

Előzmény: Lacibácsi, 2021-01-19 20:49:10 [23141]


Törölt felhasználó    2021-01-20 07:58:12 [23142]

"Kérdésem az lenne hogyan lehetne induktív terhelés állóvá tenni a fényerő szabályzókat?"

1. Sehogy, mert hogy ohm-os fogyasztókra tervezték.

2. Ne hívjuk ezeket szabályzónak, csak vezérelnek.

Egyébként van saját tervezésű motorlágyindító megoldásom erre, azzal megoldható.
Vagy olcsóbb, és egyszerűbb feladat, ha a szekunder oldalon változtatod megfelelő kapcsolással (erre is van megoldásom) a halogán izzók fényerejét.

Sajnos messze élünk egymástól, mindkettőt ingyenesen szívesen bemutatnám neked működés közben. De ha gondolod, privátban még beszélgethetünk a témáról, egyéb megoldásokról.

Előzmény: Lacibácsi, 2021-01-19 20:49:10 [23141]


Lacibácsi | 238    2021-01-19 20:49:10 [23141]

Sziasztok! Tanácsot szeretnék kérni.
12V os halogén világításhoz használtam a kontallux érintős fényerőszabályzót.Egy toroid trafó primerét szabályozta, 8db 20 W-os halogén ment róla (összesen 160W) Sajnos tönkrement, kicseréltem a triakot, hátha az a baja de nem javult meg. Rendeltem egy GAO tekerős dimmert ami direkt induktív terheléshez való, pár szabályzás után csak teljes fénnyel világít, gondolom zárlatos lett a triak.

Kérdésem az lenne hogyan lehetne induktív terhelés állóvá tenni a fényerő szabályzókat?
A kontallux sem bírja hivatalosan, egy kicsit nagyobb biztosíték lett beletéve, így 20 évig üzemelt.
A 12V-os halogéneket szeretném meghagyni, a trafót ki tudnám cserélni pl. elektronikus előtétre. A kontallux a teljes tartományban szabályzott (nulla fénytől maximumig) ez jó lenne továbbra is ha így lene, a GAO csak kb 1/3 fénytől felfelé volt állítható egy kis ideig.

  


bankimajki | 2827    2021-01-19 17:44:39 [23140]

ICT mérőtűvel szerintem simán rá lehetne csatlakozni.
Még spéci cuccok sem kellenek.
Csak egy "harmadikkéz nevű eszköz", amibe befogod az ICT hegyes mérőtűt és egy nagyító vagy egy szuper kamerával rendelkező telefon.
És némi kézügyesség.

Előzmény: svejk, 2021-01-19 17:29:21 [23139]

svejk | 33038    2021-01-19 17:29:21 [23139]

Szerencsére úgy néz ki nem életbevágó, mert az ebay-en van tízen-hoszon ezerért EPROM, de ugye a kíváncsiság...
Már máskor is ki akartam próbálni.

Előzmény: svejk, 2021-01-19 17:26:50 [23138]


svejk | 33038    2021-01-19 17:26:50 [23138]

Első ötletem nekem is ez volt de táp felé nincsenek.
No meg nincs is szabad láb.
A Vpp ugye nem lehet, az OE és a CE pedig aktív L lábak.

Előzmény: pbalazs, 2021-01-19 17:18:28 [23137]


pbalazs | 629    2021-01-19 17:18:28 [23137]

Nincsenek a lábakon védődiódák? Arra gondolok, hogy egy nem használt lábon be lehetne tápolni...

Előzmény: svejk, 2021-01-19 17:06:39 [23135]


Rabb Ferenc | 4360    2021-01-19 17:10:52 [23136]

Amit el lehet szabni azt el is szabják. Amit nem lehet - na azt is!

Ezt nehéz lesz egy kattogós wellerrel visszaragasztani. Általában ultrahanggal vagy lézerrel hegesztik a helyére a talán 6 mikronos arany vagy alumínium huzalt.

Próbáld meg egy X-Y-Z irányban finoman állítható és rögzíthető tű hegyével mikroszkóp alatt megérinteni a chip Vcc pontját. Talán... Sok sikert!

Előzmény: svejk, 2021-01-19 16:56:55 [23132]


svejk | 33038    2021-01-19 17:06:39 [23135]

Basszus, kép megint lemaradt:

  

Előzmény: svejk, 2021-01-19 17:05:52 [23134]


svejk | 33038    2021-01-19 17:05:52 [23134]

A pirossal bekeretezett bondolás a Vcc lábé. eredetileg a kék vonal helyett is lógott egy pici drót a chiptől, oda kellene rácsatlakozni.

Már sok ilyennel EPROM "hibával" találkoztam de ott mindig volt mentett vagy talált tartalom amit vissza lehetett írni.
(pl. Epson FX1050 magyar ékezet)

A mostani tartalom megszerzése kicsit nyűgösebbenek látszik.

Egyébként még lehet a tűs csatlakozást is meg lehetne próbálni mint anno a detektoros rádió kristályánál.

Előzmény: svejk, 2021-01-19 16:57:58 [23133]


svejk | 33038    2021-01-19 16:57:58 [23133]

Két kép gyorsban.

    

Előzmény: svejk, 2021-01-19 16:56:55 [23132]


svejk | 33038    2021-01-19 16:56:55 [23132]

Mindennek meg van a miértje...

Fordítva lett bedugva a foglalatba és a Vcc láb bondolása jól láthatóan mint egy biztosíték megszakadt.
Maga a chip szerintem 99%-hogy túlélte.
Ha rá tudnék csatlakozni a chip Vcc részére ki tudnám olvasni és reprodukálni a tartalmat.

Kis hornyokat köszörülgettem keresztbe 5 mm-enként és satuban megroppantottam a fedél részeket.
Szépen lepattannak, a bondolás nem sérült.
Viszont ahogy hozzáértem egy tűvel a chip felőli drót darabhoz az azonnal levált a chipről.

Ezek csak próbák voltak, biztos kézzel és mikroszkóp alatt nem tartom lehetetlennek a dolgot.

Előzmény: sanyi, 2021-01-19 15:17:51 [23130]


PSoft | 18591    2021-01-19 16:43:27 [23131]

Szerintem struktúra váltást akar, át akarja forrasztgatni a cellák kivezetéseit.
Ablakon keresztül az...bajosan menne.

Előzmény: sanyi, 2021-01-19 15:17:51 [23130]


sanyi | 1919    2021-01-19 15:17:51 [23130]

No az indok engem is érdekelne... lehet, hogy úgy jobban látja olvasni a biteket

Előzmény: Rabb Ferenc, 2021-01-19 14:04:45 [23128]

Rabb Ferenc | 4360    2021-01-19 14:07:16 [23129]

Bocs, csak EPROM

Előzmény: Rabb Ferenc, 2021-01-19 14:04:45 [23128]


Rabb Ferenc | 4360    2021-01-19 14:04:45 [23128]

Hozzáértő barátaim szerint nem egy életbiztosítás az EEPROM számára.Esetleg egy fogorvosi csiszolóval körben lecsiszolni a peremét és úgy megpróbálni leemelni a kalapját.

Csak úgy kíváncsiságból: miért akarod megskalpolni? Az ablakos törölhető és újra írható, a kerámia tetejű pedig olvasható és utána sokszorosítható. Ma már nem olyan drága egy ilyen soklábú...

Előzmény: svejk, 2021-01-19 12:42:48 [23127]


svejk | 33038    2021-01-19 12:42:48 [23127]

Sosem próbáltam, de most kellene.

Régi 27Cxxx, ragasztott kerámiatokos EPROM-ról próbálta már valaki lepattintani a felső fedelet vagy a kvarcüveg ablakot?


TBS-TEAM | 2802    2021-01-15 21:17:01 [23126]

Ha biztonságosat akarsz AMPHENOL ezt használhatod.
Kör alakú 250V-ig 28mm

Előzmény: GAtesz, 2021-01-12 19:18:33 [23110]


dtb | 1914    2021-01-15 20:51:50 [23125]

Nem, az enyémen ilyen van első, és második ránézésre is:spindle motor plug

Előzmény: Szalai György, 2021-01-15 17:09:35 [23121]


lovas gyula | 1874    2021-01-15 20:13:53 [23124]

Arra viszont jó, hogy elvigyék a világot!
"nem biztos, hogy jó, de egész biztos nem jó" irányába.

Előzmény: Törölt felhasználó, 2021-01-15 18:00:06 [23123]


Törölt felhasználó    2021-01-15 18:00:06 [23123]

A Kínaiak mindenhol szeretik használni... de az nem jó referencia.

Előzmény: RJancsi, 2021-01-15 17:10:04 [23122]


RJancsi | 5809    2021-01-15 17:10:04 [23122]

Íme egy video egy ilyen "szörnyről". 3,5 kW-os tárcsamotor, 100 V-os rendszer. 1:05 környékén látható a töltője és ennek is ugyanilyen (5 pólusú) csatlakozója van.

Előzmény: RJancsi, 2021-01-15 17:03:57 [23120]


Szalai György | 9490    2021-01-15 17:09:35 [23121]

Második ránézésre már. . .

.. . . lehet, hogy ilyennel.

Előzmény: dtb, 2021-01-15 16:17:20 [23118]


RJancsi | 5809    2021-01-15 17:03:57 [23120]

Az elektromos egykerekűk, rollerek és "segway"-ek is gyakran ilyen töltőcsatlakozót kapnak, nem ritkán 80-100 V DC-re és 5-10 A-re. Nem hallottam, hogy bármelyik emiatt füstölt volna el.

Előzmény: dtb, 2021-01-15 16:17:20 [23118]

Bencze András | 1033    2021-01-15 16:47:37 [23119]

Elég baj az...

Előzmény: dtb, 2021-01-15 16:17:20 [23118]


dtb | 1914    2021-01-15 16:17:20 [23118]

Nem kötekedés képpen, de bizony a kínai marók pont ilyennel vannak szerelve... legalábbis ránézésre ugyanaz.

Előzmény: Bencze András, 2021-01-12 20:05:36 [23114]


RJancsi | 5809    2021-01-15 15:57:38 [23117]

Gyenge a 230V-os hálózatod. Nekem korábban akkor fagyott le a lézer gravírozóm, ha vágás közben elfogyott a nyomás és bekapcsolt a kompresszor. Próbáld meg szünetmentes tápról működtetni a marót.
Vagy ha van, tedd át másik fázisra a marót a "nagy" fogyasztóktól.

Előzmény: Smok4, 2021-01-15 15:32:56 [23116]


Smok4 | 3    2021-01-15 15:32:56 [23116]

Sziasztok!

Lenne egy kis problémám és hátha van ötletetem mi lehet a baj.
Adott egy 3 tengelyes wabeco marógép mach3-ra alakítva. Amikor a gép környezetében valamilyen gép pl 3d nyomtató, kompresszor, eszterga bekapcsol egy pillanatra elmegy a monitornak a képe amire a maró is van kötve.
Ekkor mintha nem kommunikálna a számítógép és a motor vezérlő és eláll a nullpont.
Találkozott már valaki ilyennel?

Köszi előre is.


Szalai György | 9490    2021-01-12 20:16:53 [23115]

Használt M23 motor csatlakozót szerintem kérj itt a fórumon és megadatik.

Biztos akad valakinél egy elfekvő kiszerelt pár, belekötött vezetékdarabbal együtt.
Szerintem.

Előzmény: GAtesz, 2021-01-12 19:18:33 [23110]


Bencze András | 1033    2021-01-12 20:05:36 [23114]

Én erre nem bíznék 400V-ot...De még 230-at se. Javaslom csak olyat tegyél aminek van minősítése. Ha meg frekiváltót használsz akkor még inkább.

Előzmény: GAtesz, 2021-01-12 19:41:54 [23111]


GAtesz | 132    2021-01-12 19:51:42 [23113]

GX16 250V GX20 400V
GX-Series


lovas gyula | 1874    2021-01-12 19:48:25 [23112]

Nem hálozati feszültségre vannak

Előzmény: GAtesz, 2021-01-12 19:41:54 [23111]


GAtesz | 132    2021-01-12 19:41:54 [23111]

Közben találtam a GX16 és GX20 jelű csatikat. ezek már jók lennének? https://www.aliexpress.com/item/1005001838807944.html?spm=a2g0o.productlist.0.0.67435cd7FpiWX4&algo_pvid=8157e10a-e982-4daa-a4a7-80891c942c12&algo_expid=8157e10a-e982-4daa-a4a7-80891c942c12-14&btsid=2100bddf16104768439571828ea5f1&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_

Előzmény: GAtesz, 2021-01-12 19:18:33 [23110]


GAtesz | 132    2021-01-12 19:18:33 [23110]

Üdv!
Volna egy kérdésem. Háromfázisú max 2.2KW teljesítményű marómotorhoz milyen csatlakozót építsek be a gép és a szekrény közé. Valami kör alakú lenne szimpatikus.
Van valami bevált csatlakozó erre?
Üdv, Atesz.

drehás | 350    2021-01-10 17:08:10 [23109]

Szevasztok!
Köszönöm a segítő szándékot.
A programozás nálam a hex file betöltésével kezdődik,és zárul.
Ezt a kapcsolást megépítettem,és egy GDO (grip dip oscilator)mechanikus skáláját lenne hivatott kiváltani.
Ezen az oldalon közölt hex vamiért nem indul el.Találtam egy felhasználótól ugyanezt a hex-et ,de beírta a nevét bejelentkező szövegként,és azt nem akarom,meg nem ő írta egyébként sem a programot.
Ezért gondoltam,hátha valaki tud segíteni az eredeti program elindításában.
Az ASM számomra arabusul van,így azt nem tudom használni,pedig gondolom az üdvözlő ,illetve bejelentkező üzenetet ebben lehetne megadni.
Egyébként sajátépítésű pickit 2-t használok program betöltésre.


Törölt felhasználó    2021-01-10 16:02:16 [23108]

Húúúú... de rég volt... 15-évvel ezelőtt csináltam ezt, de az 50MHz-es nekem elég volt, azt átalakítottam, de még ma is működik. Jó volt amikor használni kellett, de ma már több "igazi" van, úgyhogy csak "kiállításba" van, a hobbi szobám dekorálására van használva. De most kipróbáltam.

Azon hogy a hex kódot nem tudod használni nem tudok segíteni, de szerintem az .asm kódot kell letölteni és új hex kódot abból kell csinálni, az biztosabb.

Biztos hogy jó PIC tipust állitottad be a programozón? Nekem csak öreg PICkit 2 van, de vannak ujjabbak is. Én csak MPLAB IDE-vel használom minden fajta PIC-et. Van egy csomó fajta, szeretek velük játszani de csak assemblerel programmozom öket.

Itt van az eredeti 50MHz kód, de ha akarod felrakom az én kódomat is. Sok szerencsét.

;******************************************************************************
; FREQUENCY COUNTER
; Model : WTCNT
; Author : Terry J. Weeder
; Date : November 18, 1993
; Version: 1.0
;
; WWW.WEEDTECH.COM
;
; Ported to 16f84 by
; Peter Cousens
; October 1998
;
;
;******************************************************************************
;
;watchdog disabled
;
list P=16F84a
#include <p16f84a.inc>

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC


ind equ 0h
rtcc equ 1h
pc equ 2h
status equ 3h
fsr equ 4h
port_a equ 5h
port_b equ 6h
;port_c equ 7h
c equ 0h
dc equ 1h
z equ 2h
pd equ 3h
to equ 4h
MSB equ 7h
LSB equ 0h
;
cnt equ 2h
rs equ 2h
rw equ 1h
e equ 0h
o equ 7h
;
count1 equ 2ch
count2 equ 2dh
in_reg equ 2eh
addcnt equ 2fh
gate equ 0Ch
cnt1 equ 0Dh
cnt2 equ 0Eh
cnt3 equ 0Fh
calc1 equ 10h
calc2 equ 11h
calc3 equ 12h
sum1 equ 13h
sum2 equ 14h
sum3 equ 15h
rtcc2 equ 16h
;
org 0
goto start
;
int_del
movlw 0x05 ;delay 5.000 ms (4 MHz clock)
movwf count1
d1
movlw 0xA5
movwf count2
d2
decfsz count2,f
goto d2
decfsz count1,f
goto d1
retlw 0x00
;
lcd_out
movwf port_b ;load data into port_b
movlw b'00000000' ;define port_b as output
; movwf TRISB
tris port_b
bsf port_a,rs ;rs = data
bcf port_a,rw ;r/w = write
bsf port_a,e ;toggle enable
bcf port_a,e
movlw b'11111111' ;define port_b as input
; movwf TRISB
tris port_b
bcf port_a,rs ;rs = instruction
bsf port_a,rw ;r/w = read
bsf port_a,e ;enable high
movf port_b,w ;get address counter
movwf addcnt
bsf addcnt,7
bcf port_a,e ;enable low

out1
bsf port_a,e ;enable high
btfss port_b,7 ;test busy flag
goto out2
bcf port_a,e ;enable low
goto out1

out2
bcf port_a,e ;enable low
goto shift
;
inst
movwf port_b ;load instruction into port_b
movlw b'00000000' ;define port_b as output
tris port_b
bcf port_a,rs ;rs = instruction
bcf port_a,rw ;r/w = write
bsf port_a,e ;toggle enable
bcf port_a,e
movlw b'11111111' ;define port_b as input
tris port_b
bsf port_a,rw ;r/w = read
inst1
bsf port_a,e ;enable high
btfss port_b,7 ;test busy flag
goto inst2
bcf port_a,e ;enable low
goto inst1
inst2
bcf port_a,e ;enable low
retlw 0x00
;
;*********************************************************************
;* WEEDER FREQUENCY COUNTER
;* Fix for 2 line (8x2) displays that were sold as 16x1 displays
;*
;* Because most of these displays lack a controller chip
;* it is required that the code manually sets the address for the
;* 9th char. That is what this code does.
;*
;* Questions?
;* Drop me an e-mail cklymko@hotmail.com
;*
;* Scroll through your code and locate "Shift".
;* Paste the following code starting with "Shift" and ending
;* just before the first "sub" command.
;*
;*********************************************************************
shift
btfsc addcnt,6 ;added for 8x2 displays
goto shift2 ;
; btfsc addcnt,3 ;
; goto line2 ;end the 8x2 code
btfss addcnt,0 ;shift to opposite side of display?
retlw 0x00
btfss addcnt,1
retlw 0x00
btfss addcnt,2
retlw 0x00
goto line2
; btfss addcnt,3
retlw 0x00

line2
movlw 0xB8 ;Force the second line.
addwf addcnt,f
bsf addcnt,7
movf addcnt,w
goto inst
;*********************************************************************
; added to move back to home position.
;*********************************************************************

shift2
btfsc addcnt,3 ;
goto line1
btfss addcnt,0 ;shift to opposite side of display?
retlw 0x00
btfss addcnt,1
retlw 0x00
btfss addcnt,2
retlw 0x00
; btfss addcnt,3
retlw 0x00
line1
movlw 0x39
addwf addcnt,f
bsf addcnt,7
movf addcnt,w
goto inst
;
; The part below is commented. Use only with 1-line display
;
;shift
; btfss addcnt,0 ;shift to opposite side of display?
; retlw 0x00
; btfss addcnt,1
; retlw 0x00
; btfss addcnt,2
; retlw 0x00
; btfss addcnt,3
; retlw 0x00
; movlw 0x39
; addwf addcnt,f
; bsf addcnt,7
; movf addcnt,w
; goto inst
;;
sub
bcf status,o ;clear overflow bit
movf calc1,w ;subtract calc1 from cnt1
subwf cnt1,f
btfsc status,c
goto sb1
movlw 0x01 ;borrow from cnt2 if overflow
subwf cnt2,f
btfsc status,c
goto sb1
subwf cnt3,f ;borrow from cnt3 if cnt2 overflow
btfss status,c
bsf status,o ;set overflow bit if result is negative
sb1
movf calc2,w ;subtract calc2 from cnt2
subwf cnt2,f
btfsc status,c
goto sb2
movlw 0x01 ;borrow from cnt3 if cnt2 overflow
subwf cnt3,f
btfss status,c
bsf status,o ;set overflow bit if result is negative
sb2
movf calc3,w ;subtract calc3 from cnt3
subwf cnt3,f
btfss status,c
bsf status,o ;set overflow bit if result is negative
retlw 0x00
;
add
movf calc1,w ;add calc1 to cnt1
addwf cnt1,f
btfss status,c
goto ad1
incfsz cnt2,f ;add to cnt2 if cnt1 overflow
goto ad1
incf cnt3,f ;add to cnt3 if cnt2 overflow
ad1
movf calc2,w ;add calc2 to cnt2
addwf cnt2,f
btfsc status,c
incf cnt3,f ;add to cnt3 if cnt2 overflow
movf calc3,w ;add calc3 to cnt3
addwf cnt3,f
retlw 0x00
;
cnvt
movlw 0x07 ;7 digits in display
movwf count1
movlw 0x19 ;set fsr for MSB in display
movwf fsr
movlw 0x2F ;one less that ASCII "0"
cnvt0
movwf ind
incf fsr,f
decfsz count1,f
goto cnvt0
movlw 0x0F ;load "1,000,000" in calc1-3
movwf calc3
movlw 0x42
movwf calc2
movlw 0x40
movwf calc1
cnvt1
call sub ;subtract number from count
incf 19,f ;increment 1,000,000's register
movlw 0x3A
xorwf 19,w
btfsc status,z
goto overflow
btfss status,o ;check if overflow
goto cnvt1
call add ;add back last number
movlw 0x01 ;load "100,000" in calc1-3
movwf calc3
movlw 0x86
movwf calc2
movlw 0xA0
movwf calc1
cnvt2
call sub ;subtract number from count
incf 1A,f ;increment 100,000's register
btfss status,o ;check if overflow
goto cnvt2
call add ;add back last number
clrf calc3 ;load "10,000" in calc1-3
movlw 0x27
movwf calc2
movlw 0x10
movwf calc1
cnvt3
call sub ;subtract number from count
incf 1B,f ;increment 10,000's register
btfss status,o ;check if overflow
goto cnvt3
call add ;add back last number
movlw 0x03 ;load "1,000" in calc1-3
movwf calc2
movlw 0xE8
movwf calc1
cnvt4
call sub ;subtract number from count
incf 1C,f ;increment 1,000's register
btfss status,o ;check if overflow
goto cnvt4
call add ;add back last number
clrf calc2 ;load "100" in calc1-3
movlw 0x64
movwf calc1
cnvt5
call sub ;subtract number from count
incf 1D,f ;increment 100's register
btfss status,o ;check if overflow
goto cnvt5
call add ;add back number
movlw 0x0A ;load "10" in calc1-3
movwf calc1
cnvt6
call sub ;subtract number from count
incf 1E,f ;increment 10's register
btfss status,o ;check if overflow
goto cnvt6
call add ;add back last number
movf cnt1,w ;put remainder in 1's register
addwf 1F,f
incf 1F,f
retlw 0x00
;
count
movlw b'00110111' ;rtcc = ext, 1/256
option
movlw b'00010000' ;define port_a as output
tris port_a
bcf port_a,3
bcf port_a,2
clrf cnt3
clrf rtcc
clrf rtcc2
bsf port_a,2 ;toggle rtcc pin
bcf port_a,2
movf gate,w ;get gate time
movwf count1
bsf port_a,3 ;start count
fr4
movlw 0xFA
movwf count2
goto fr6
fr5
nop
nop
nop
nop
nop
nop
fr6
movf rtcc,w ;test for rtcc rollover (12)
subwf rtcc2,f
btfss status,z
goto fr7
nop
goto fr8
fr7
btfsc status,c
incf cnt3,f
fr8
movwf rtcc2
nop
nop
nop
decfsz count2,f
goto fr5
decfsz count1,f
goto fr4
bcf port_a,3 ;stop count
movf rtcc,w ;get rtcc count
movwf cnt2
subwf rtcc2,f ;test for rtcc rollover
btfss status,c
goto fr9
btfss status,z
incf cnt3,f
fr9
clrf cnt1 ;set to get prescaler count
fr10
decf cnt1,f
bsf port_a,2 ;toggle rtcc pin
bcf port_a,2
movf rtcc,w ;test if rtcc has changed
xorwf cnt2,w
btfsc status,z
goto fr10
retlw 0x00
;
;******************************************************************************
; START
;******************************************************************************
;
start
clrf port_a ;instruction, write, enable low
movlw b'00010000'
tris port_a
clrf port_b
movlw b'00000000'
tris port_b
call int_del
call int_del
call int_del
movlw 0x38 ;initialize display
movwf port_b
bsf port_a,e ;toggle enable
call int_del
bcf port_a,e
bsf port_a,e ;toggle enable
call int_del
bcf port_a,e
bsf port_a,e ;toggle enable
call int_del
bcf port_a,e
movlw 0x38 ;function
call inst
movlw b'00001100' ;display on, cursor off
call inst
movlw b'00000001' ;clear display
call inst
movlw b'00000110' ;entry mode
call inst
;
mhz
movlw 0x14 ;0.1 sec gate
movwf gate
call count
call cnvt ;convert binary to BCD
movlw 0x30 ;test if "0"
xorwf 19,w
btfss status,z
goto mhz1
movlw 0x30 ;test if "0"
xorwf 1A,w
btfsc status,z
goto khz1
mhz1
movlw 0x82 ;set display address
call inst
movlw 0x02 ;output first 2 characters
movwf count1
movlw 0x19 ;MSD of freq
movwf fsr
mhz2
movlw 0x30 ;test if "0"
xorwf ind,w
btfss status,z
goto mhz3
movlw 0x20 ;change preceeding "0's" to "space"
call lcd_out
incf fsr,f
decfsz count1,f
goto mhz2
goto mhz4
mhz3
movf ind,w
call lcd_out
incf fsr,f
decfsz count1,f
goto mhz3
mhz4
movlw 0x2E ;"."
call lcd_out
movlw 0x05 ;output last 5 characters
movwf count1
mhz5
movf ind,w
call lcd_out
incf fsr,f
decfsz count1,f
goto mhz5
movlw 0x20 ;"space"
call lcd_out
movlw 0x4D ;"M"
call lcd_out
movlw 0x48 ;"H"
call lcd_out
movlw 0x7A ;"z"
call lcd_out
movlw 0x20 ;"space"
call lcd_out
movlw 0x20 ;"space"
call lcd_out
goto mhz
;
khz
movlw 0x14 ;0.1 sec gate
movwf gate
call count
call cnvt ;convert binary to BCD
movlw 0x30 ;test if 0
xorwf 19,w
btfss status,z
goto mhz1
movlw 0x32 ;test if < 2
subwf 1A,w
btfsc status,c
goto mhz1
movlw 0x30 ;test if "0"
xorwf 1A,w
btfss status,z
goto khz1
movlw 0x30 ;test if "0"
xorwf 1B,w
btfsc status,z
goto xkhz
khz1
movlw 0x82 ;set display address
call inst
movlw 0x05 ;output first 5 characters
movwf count1
movlw 0x19 ;MSD of freq
movwf fsr
khz2
movlw 0x30 ;test if "0"
xorwf ind,w
btfss status,z
goto khz3
movlw 0x20 ;change preceeding "0's" to "space"
call lcd_out
incf fsr,f
decfsz count1,f
goto khz2
goto khz4
khz3
movf ind,w
call lcd_out
incf fsr,f
decfsz count1,f
goto khz3
khz4
movlw 0x2E ;"."
call lcd_out
movf ind,w ;output last 2 characters
call lcd_out
incf fsr,f
movf ind,w
call lcd_out
movlw 0x20 ;"space"
call lcd_out
movlw 0x4B ;"K"
call lcd_out
movlw 0x48 ;"H"
call lcd_out
movlw 0x7A ;"z"
call lcd_out
movlw 0x20 ;"space"
call lcd_out
movlw 0x20 ;"space"
call lcd_out
goto khz
;
xkhz
movlw 0xC8 ;1 sec gate
movwf gate
call count
call cnvt ;convert binary to BCD
movlw 0x30 ;test if 0
xorwf 19,w
btfss status,z
goto khz
movlw 0x32 ;test if < 2
subwf 1A,w
btfsc status,c
goto khz
movlw 0x30 ;test if 0
xorwf 1A,w
btfss status,z
goto xkhz1
movlw 0x30 ;test if 0
xorwf 1B,w
btfsc status,z
goto hz0
xkhz1
movlw 0x82 ;set display address
call inst
movlw 0x04 ;output first 4 characters
movwf count1
movlw 0x19 ;MSD of freq
movwf fsr
xkhz2
movlw 0x30 ;test if "0"
xorwf ind,w
btfss status,z
goto xkhz3
movlw 0x20 ;change preceeding "0's" to "space"
call lcd_out
incf fsr,f
decfsz count1,f
goto xkhz2
goto xkhz4
xkhz3
movf ind,w
call lcd_out
incf fsr,f
decfsz count1,f
goto xkhz3
xkhz4
movlw 0x2E ;"."
call lcd_out
movf ind,w ;output last 3 characters
call lcd_out
incf fsr,f
movf ind,w
call lcd_out
incf fsr,f
movf ind,w
call lcd_out
movlw 0x20 ;"space"
call lcd_out
movlw 0x4B ;"K"
call lcd_out
movlw 0x48 ;"H"
call lcd_out
movlw 0x7A ;"z"
call lcd_out
movlw 0x20 ;"space"
call lcd_out
movlw 0x20 ;"space"
call lcd_out
goto xkhz
;
hz
movlw 0xC8 ;1 sec gate
movwf gate
call count
call cnvt ;convert binary to BCD
movlw 0x30 ;test if "0"
xorwf 19,w
btfss status,z
goto xkhz1
movlw 0x30 ;test if "0"
xorwf 1A,w
btfss status,z
goto xkhz1
movlw 0x32 ;test if < 2
subwf 1B,w
btfsc status,c
goto xkhz1
hz0
movlw 0x82 ;set display address
call inst
movlw 0x07 ;output first 7 characters
movwf count1
movlw 0x19 ;MSD of freq
movwf fsr
hz1
movlw 0x30 ;test if "0"
xorwf ind,w
btfss status,z
goto hz2
movlw 0x20 ;change preceeding "0's" to "space"
call lcd_out
incf fsr,f
decfsz count1,f
goto hz1
goto hz3
hz2
movf ind,w
call lcd_out
incf fsr,f
decfsz count1,f
goto hz2
hz3
movlw 0x20 ;"space"
call lcd_out
movlw 0x48 ;"H"
call lcd_out
movlw 0x7A ;"z"
call lcd_out
movlw 0x20 ;"space"
call lcd_out
movlw 0x20 ;"space"
call lcd_out
movlw 0x20 ;"space"
call lcd_out
movlw 0x20 ;"space"
call lcd_out
goto hz
;
overflow
movlw 0x01 ;clear display
call inst
movlw 0x84 ;display address
call inst
movlw 0x4F ;"O"
call lcd_out
movlw 0x76 ;"v"
call lcd_out
movlw 0x65 ;"e"
call lcd_out
movlw 0x72 ;"r"
call lcd_out
movlw 0x66 ;"f"
call lcd_out
movlw 0x6C ;"l"
call lcd_out
movlw 0x6F ;"o"
call lcd_out
movlw 0x77 ;"w"
call lcd_out
movlw 0x02 ;cursor at home
call inst
goto mhz
;
end




    

Előzmény: drehás, 2021-01-10 14:35:43 [23105]


Csuhás | 6722    2021-01-10 15:53:48 [23107]

Ha nem látszik semmi a kijelzőn annak a legtöbb esetben a kontraszt poti hiánya vagy rossz beállítása az oka.

Egy hex fileben egy hex editorral tudsz szöveget cserélni. Persze egy kis odafigyelést igényel. Általában rövidebbre egyszerűbb a csere. De figyelni kell hogy a string záró nullás, vagy az elején tárolja a hosszt. Illetve a program is ellenőrizheti az adatait pl kontroll summával.

Előzmény: drehás, 2021-01-10 14:37:26 [23106]


drehás | 350    2021-01-10 14:37:26 [23106]

http://www.piclist.com/techref/piclist/weedfreq.htm

Előzmény: drehás, 2021-01-10 14:35:43 [23105]


drehás | 350    2021-01-10 14:35:43 [23105]

Szevasztok!
Hozzáértő segítségét várom, ha lehetséges.
Egy pic16F84 be betöltök egy hex filet,de nem indul.
Ezt a programot megtaláltam valaki neve alatt,de ő csak a nevét írta hozzá.
Szeretném a programot elindítani eredetiben ,vagy más bejelentkező szöveggel.Miként lehetséges?
[url]http://www.piclist.com/techref/piclist/weedfreq.htm[/u
rl]


Törölt felhasználó    2021-01-10 14:34:12 [23104]

Nem teljesen igaz, mert ha csak egyik van földelve a másik meg el van szigetelve a földtől (nem lett földelve) akkor minden rendbe van. Én így oldottam meg: 'Elektronika' téma, 23102. hozzászólás

Természetesen ha mind a kettő földelve lenne akkor nem lehet sorba kötni őket.

Előzmény: Csuhás, 2021-01-09 19:41:36 [23099]


Törölt felhasználó    2021-01-10 14:26:30 [23103]

Itt az .ino kód ha valaki ezt akarja csinálni.

Sok szerencsét.


#include <Adafruit_ILI9341.h>
//#include <Adafruit_ILI9486.h>
#include <Wire.h>
#include <MCUFRIEND_kbv.h>
#include <Time.h>
#include "RTClib.h"

RTC_DS1307 RTC;
MCUFRIEND_kbv tft;

// find the TFT display type and set it
//uint16_t identifier = 0x9341; // TFT identifier for the Welleman WM412
//uint16_t identifier = 0x9328; //
uint16_t identifier = 0x6809; // TFT identifier for the "phone" type RM68090 model

// The control pins for the LCD can be assigned to any digital or
// analog pins...but we'll use the analog pins as this allows us to
// double up the pins with the touch screen (see the TFT paint example).

#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
//#define LCD_RD A0 // LCD Read goes to Analog 0
//#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin

#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define DARKGREEN 0x03E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
#define GREY 0x808080

#define NAVY 0x000F
#define DARKCYAN 0x03EF
#define MAROON 0x7800
#define PURPLE 0x780F
#define OLIVE 0x7BE0
#define LIGHTGREY 0xC618
#define DARKGREY 0x7BEF
#define ORANGE 0xFD20
#define GREENYELLOW 0xAFE5
#define PINK 0xF81F

// Color definitions

#define ILI9341_BLACK 0x0000 ///< 0, 0, 0
#define ILI9341_NAVY 0x000F ///< 0, 0, 123
#define ILI9341_DARKGREEN 0x03E0 ///< 0, 125, 0
#define ILI9341_DARKCYAN 0x03EF ///< 0, 125, 123
#define ILI9341_MAROON 0x7800 ///< 123, 0, 0
#define ILI9341_PURPLE 0x780F ///< 123, 0, 123
#define ILI9341_OLIVE 0x7BE0 ///< 123, 125, 0
#define ILI9341_LIGHTGREY 0xC618 ///< 198, 195, 198
#define ILI9341_DARKGREY 0x7BEF ///< 123, 125, 123
#define ILI9341_BLUE 0x001F ///< 0, 0, 255
#define ILI9341_GREEN 0x07E0 ///< 0, 255, 0
#define ILI9341_CYAN 0x07FF ///< 0, 255, 255
#define ILI9341_RED 0xF800 ///< 255, 0, 0
#define ILI9341_MAGENTA 0xF81F ///< 255, 0, 255
#define ILI9341_YELLOW 0xFFE0 ///< 255, 255, 0
#define ILI9341_WHITE 0xFFFF ///< 255, 255, 255
#define ILI9341_ORANGE 0xFD20 ///< 255, 165, 0
#define ILI9341_GREENYELLOW 0xAFE5 ///< 173, 255, 41
#define ILI9341_PINK 0xFC18 ///< 255, 130, 198

// 74HC4067 Analog multiplexer control pins definitions.
// Sharing the SD card control pins of the LCD shield

int s0 = 10; // SDSS
int s1 = 11; // SDDI
int s2 = 12; // SDDO
int s3 = 13; // SDCLK used for emergency shut down relay control
//
// Multiplexer channels used. Call setmux(int) with this value.
//
#define An_in A0 // A0 is to be used for analogue measurments
#define Ain_valInput 0

#define Current2Input 0
#define Current1Input 1
#define Voltage2Input 2
#define Voltage3Input 3
#define PSUTempInput 4
#define ExtTemp1Input 5
#define ExtTemp2Input 6
#define RTCReset 7 // This MUX channel is the RTC reset request pin. Must be set to low to reset the RTC to compile time.

#define PSUFailLED_B 14 // This LED will flash if one or the other PSU units failed. External USB power is needed for PSU2 failure indication.
#define MaxTempLED_R 15 // This LED will flash if any of the temperature sensors indicate overheat which is set below.

int AnalogPin = 0; // This input is the only free analog pin with this shield
int Ain_val = 0; // The value will be set when An_in is read
float Voltage = 0; // The value will be set when An_in is converted to voltage

//
// Volage divider R1 and R2 values of the analog input.
// The range for U1 is 0-6V, U2 is 0-15V and U3 is 0-25V, but only U2 and U3 are used here.
// The above range is only approximative based on formula calculations.
// The resistances are measured for better accuracy in calculations used inside the routine.
//
float R1 = 99700.0; // Voltage divider resistance of R1

float R2_V1 = 510300.0; // resistance of R2 0-6V range
float R2_V2 = 51020.0; // resistance of R2 0-15V range
float R2_V3 = 21950.0; // resistance of R2 0-25V range

float Voltage1 = 0; // 0-6V
float Voltage2 = 0; // 0-15V
float Voltage3 = 0; // 0-25V
float Current1 = 0; // 0-25A
float Current2 = 0; // 0-25A

//-------------------------
//
// Emergency shut down is disabled, but it is possible to use if needed.
//
//float MaxCurrent1 = 6; // Set the maximum current for energency shut down. This is the 24V current.
//float MaxCurrent2 = 14; // Set the maximum current for energency shut down. This is the total current.
//
#define MaxPSU1Temp 45
#define MaxPSU2Temp 45
#define MaxAirTemp 45

//
//-------------------------
//
// Current is measured using ACS712 module, which outputs VCC / 2 for zero A.
// Output voltage depends on the type of module.
// Current measuring constants for the used ACS712 module.
//
float Sens_30A = 0.066; // Output sense V/A
float Sens_20A = 0.100;
float Sens_5A = 0.185;

float Temperature = 0;
float PSU2_temp = 0;
float PSU1_temp = 0;
float Air_temp = 0;

#define TEMPERATURENOMINAL 25 // Temperature for nominal resistance (almost always 25 C)
#define NUMSAMPLES 10 // Number of samples to take and average to get a more stable reading
#define BCOEFFICIENT 3950 // The beta coefficient of the thermistor (usually 3000-4000)
#define SERIESRESISTOR 10000 // Value of R1 resistor in series with the thermistor

float Thermistor_R = 107800; // 100k thermistor
int samples[NUMSAMPLES];

int MuxChan = 0; // This is the multiplexer channel number which is connected to Ain for reading

//-------------------------
//
// The DS18B20 temperature sensor can also be used but here only NTC thermistors are used.
//
//#include <OneWire.h>
//#include <DallasTemperature.h>
//float tempC = 0;
//
//#define ONE_WIRE_BUS 13 // Define pin for the one wire bus where the DS18B20 is connected
//OneWire oneWire(ONE_WIRE_BUS); // Create a new instance of the OneWire class to communicate with any OneWire device
//DallasTemperature sensors(&oneWire); // Pass the oneWire reference to DallasTemperature library
//
//-------------------------

void setup(void) {

Serial.begin(38400);
while (!Serial) ; // wait for Arduino Serial Monitor

// sensors.begin(); // Start up the 18B20 library
// sensors.setResolution(12); // Set the resolution for all devices to 9, 10, 11, or 12 bits

tft.reset();
tft.begin(identifier);
tft.setRotation(1);
tft.fillScreen(BLACK);
tft.setCursor(0, 0);

Wire.begin();
RTC.begin();
if (! RTC.isrunning()) { // Check if RTC is running and keeping the time
Serial.println("RTC is not running.");
RTC.adjust(DateTime(__DATE__, __TIME__));
RTC.adjust(DateTime(RTC.now().unixtime() + 10)); // Adjust time to compensate for the total compile time
}
pinMode(An_in, INPUT); // Same analog input is used as input for all measurements
pinMode(s0, OUTPUT); // Analog multiplexer control pins
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
// pinMode(Re1, OUTPUT); // Relay for the emergency shut down

digitalWrite(s0, LOW); // Set all analog multiplexer control pins to low
digitalWrite(s1, LOW);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
//
// Check if RTC reset is requested by the user and in that case reset the RTC to the compensated compile time.
// This is necessary to execute once before the looping starts, in case the RTC is running with the wrong time.
//
SetMux(RTCReset); // This pin is low if RTC reset is requested
if (digitalRead(An_in) == LOW) { // Check if RTC needs to be reset
Serial.println("RTC reset.");
RTC.adjust(DateTime(__DATE__, __TIME__));
RTC.adjust(DateTime(RTC.now().unixtime() + 10)); // Adjust time to compensate for the total compile time
}
setSQW(0x10); // Square wave output: 10 = 1Hz, 11 = 4kHz, 12 = 8kHz, 13 = 32kHz
}

//-------------------------
//
void loop(void) {

// Display static text on LCD first

tft.setCursor(0, 10);
tft.setTextColor(GREEN);
tft.setTextSize(2); // 16 x 36 pixels per characters
tft.print(" Adapting Camera");
tft.setCursor(10, 35);
tft.println(" DIY 3D printer PSU");

tft.setCursor(0, 100);
tft.print(" U1: V I1: A");

tft.setCursor(0, 125);
tft.print(" U2: V I2: A");

tft.setCursor(2, 160);
tft.print("PSU 1 temperature: ");
tft.print((char)247); // Display the degree symbol
tft.print("C");

tft.setCursor(2, 185);
tft.print("PSU 2 temperature: ");
tft.print((char)247); // Display the degree symbol
tft.print("C");

tft.setCursor(2, 210);
tft.print(" Air temperature: ");
tft.print((char)247); // Display the degree symbol
tft.print("C");

//-------------------------
//
// Read and update all values periodically
//
loop_intern:

// sensors.requestTemperatures(); // Send the command for all devices on the bus to perform a temperature conversion
// tempC = sensors.getTempCByIndex(0); // Fetch the temperature in degrees Celsius for device index

for(int i = 0; i < 5; i ++){

MuxChan = Current2Input;
ReadCurrent2(Sens_20A, MuxChan);

MuxChan = Current1Input;
ReadCurrent1(Sens_20A, MuxChan);

MuxChan = Voltage2Input;
ReadAnalogIn(R2_V2, MuxChan);
Voltage2 = Voltage;

MuxChan = Voltage3Input;
ReadAnalogIn(R2_V3, MuxChan); // read the input pin
Voltage3 = Voltage;


Read_PSU2_temp();
Read_PSU1_temp();
Read_Air_temp();
}
//
// Update and display the measured values on the LCD
//
// Update LCD with the current date and time first.

tft.fillRect(0, 60, 320, 16, BLACK); // Erase previous characters
tft.setCursor(40, 60); // 12x16 per char
tft.setTextColor(BLUE);

if (RTC.isrunning()) { // Check if RTC is running and keeping the time.
DateTime now = RTC.now(); // Get a snapshot of the current date and time from the RTC
tft.print(now.year(), DEC);
tft.print("-");
tft_print2digits(now.month());
tft.print("-");
tft_print2digits(now.day());

tft.print(" ");
tft_print2digits(now.hour());
tft.print(":");
tft_print2digits(now.minute());
tft.print(":");
tft_print2digits(now.second());
}
else {
if (! RTC.isrunning()) {
tft.setCursor(34, 60);
tft.print("The DS1307 is stopped.");
} else {
tft.print(" DS1307 read error!");
}
}

tft.fillRect(70, 100, 48, 16, BLACK); // erase previous character
tft.setCursor(70, 100); // 12x16 per char
tft.setTextColor(WHITE);
tft.print(Voltage2, 1);

tft.fillRect(226, 100, 48, 16, BLACK); // erase previous character
tft.setCursor(226, 100); // 12x16 per char
tft.setTextColor(WHITE);
tft.print(Current1, 1);

tft.fillRect(70, 125, 48, 16, BLACK); // erase previous character
tft.setCursor(70, 125); // 12x16 per char
tft.setTextColor(WHITE);
tft.print(Voltage3, 1);

tft.fillRect(226, 125, 48, 16, BLACK); // erase previous character
tft.setCursor(226, 125); // 12x16 per char
tft.setTextColor(WHITE);
tft.print(Current2, 1);

tft.fillRect(225, 160, 60, 16, BLACK); // erase previous character
tft.setCursor(225, 160); // 12x16 per char
tft.setTextColor(WHITE);
tft.print(PSU1_temp, 1);

tft.fillRect(225, 185, 60, 16, BLACK); // erase previous character
tft.setCursor(225, 185); // 12x16 per char
tft.setTextColor(WHITE);
tft.print(PSU2_temp, 1);

tft.fillRect(225, 210, 60, 16, BLACK); // erase previous character
tft.setCursor(225, 210); // 12x16 per char
tft.setTextColor(WHITE);
tft.print(Air_temp, 1);

// Display the values on a PC terminal through the USB

Serial.println("-------------------------------");
Serial.println(" Adapting Camera");
Serial.println(" DIY 3D printer PSU");

if (RTC.isrunning()) { // Check if RTC is running and keeping the time
DateTime now = RTC.now(); // Get a snapshot of the current date and time from the RTC
Serial.print(" Date = ");
Serial.print(now.year(), DEC);
Serial.print("-");
print2digits(now.month());
Serial.print("-");
print2digits(now.day());
Serial.println();

Serial.print(" Time = ");
print2digits(now.hour());
Serial.print(":");
print2digits(now.minute());
Serial.print(":");
print2digits(now.second());
Serial.println();
Serial.println();
}
else {
if (! RTC.isrunning()) {
Serial.println(" The DS1307 is stopped.");
Serial.println();
} else {
Serial.println("DS1307 read error! Please check the circuitry.");
Serial.println();
}
}

Serial.print(" U1: ");
Serial.print(Voltage2, 1);
Serial.print(" V I1: ");
Serial.print(Current1, 1);
Serial.println(" A");
Serial.print(" U2: ");
Serial.print(Voltage3, 1);
Serial.print(" V I2: ");
Serial.print(Current2, 1);
Serial.println(" A");
Serial.println("");

Serial.print("PSU 1 temperature: ");
Serial.print(PSU1_temp, 2);
Serial.print(" \xC2\xB0"); // shows degree symbol
Serial.println("C");
Serial.print("PSU 2 temperature: ");
Serial.print(PSU2_temp, 2);
Serial.print(" \xC2\xB0"); // shows degree symbol
Serial.println("C");
Serial.print(" Air temperature: ");
Serial.print(Air_temp, 2);
Serial.print(" \xC2\xB0"); // shows degree symbol
Serial.println("C");
Serial.println("");
delay(1500);
//
// Check for PSU failures. This will be indicated by a flashing LED.
// For PSU 2 failure to be displayed, the unit must be powered through the USB.
//
if (Voltage2 < 11) {
SetPSUFailLED();
}
if (Voltage3 < 22) {
SetPSUFailLED();
}
//
// Check for too high temperature inside the PSU and flash a LED to indicate it.
//
if (PSU2_temp >= MaxPSU2Temp) {
SetMaxTempLED();
} // Check for too high temperature
if (PSU1_temp >= MaxPSU1Temp) {
SetMaxTempLED();
}
if (Air_temp >= MaxAirTemp) {
SetMaxTempLED();
}
goto loop_intern; // Forever loop
}
//-------------------
//
// Toggle LED to indicate error condition.
//
void SetPSUFailLED() {
pinMode(An_in, OUTPUT); // Same analog input is used as output here
SetMux(PSUFailLED_B);
digitalWrite(An_in, HIGH);
delay(500);
digitalWrite(An_in, LOW);
delay(100);
pinMode(An_in, INPUT); // Same analog input is used as output here
SetMux(Ain_valInput);
}
void SetMaxTempLED() {
pinMode(An_in, OUTPUT); // Same analog input is used as output here
SetMux(MaxTempLED_R);
digitalWrite(An_in, HIGH);
delay(500);
digitalWrite(An_in, LOW);
delay(100);
pinMode(An_in, INPUT); // Same analog input is used as output here
SetMux(Ain_valInput);
}
//-------------------

#define DS1307_CTRL_ID 0x68
#define ledPin LED_BUILTIN

void setSQW(uint8_t value) {
Wire.beginTransmission(DS1307_CTRL_ID);
Wire.write(7);
Wire.write(value);
Wire.endTransmission();
}

//-------------------
//
// Used for displaying date and time to make sure that two digits are always displayed.
//
void tft_print2digits(int number) {
if (number >= 0 && number < 10) {
tft.write('0');
}
tft.print(number);
}

void print2digits(int number) {
if (number >= 0 && number < 10) {
Serial.write('0');
}
Serial.print(number);
}

//-------------------

void ReadCurrent1(float Sensitivity, int MuxChan) {
//
// adcValue = analogRead(currentPin);
Ain_val = 0;
SetMux(Current1Input);
for(int i = 0; i < NUMSAMPLES; i ++){
Ain_val = Ain_val + analogRead(AnalogPin); // read the input 10 times to avarage value
}
Ain_val = (Ain_val / NUMSAMPLES) - 512 ; // Average read
Current1 = ((Ain_val * 5.0) / 1024.0) / Sensitivity;
if (Current1 < 0.0) {
Current1 = 0.0; // Limit range to positive measurements
}
}
//-------------------

void ReadCurrent2(float Sensitivity, int MuxChan) {
//
// adcValue = analogRead(currentPin);
Ain_val = 0;
SetMux(Current2Input);
for(int i = 0; i < NUMSAMPLES; i ++){
Ain_val = Ain_val + analogRead(AnalogPin); // read the input 10 times to avarage value
}
Ain_val = (Ain_val / NUMSAMPLES) - 512 ; // Average read
Current2 = ((Ain_val * 5.0) / 1024.0) / Sensitivity;
if (Current2 < 0.0) {
Current2 = 0.0; // Limit range to positive measurements
}
}

//-------------------

void Read_PSU2_temp() {

SetMux(PSUTempInput);
// Thermistor_R = 100000; // Needs to be set if different from default
Tempread();
PSU2_temp = Temperature;

}

//-------------------

void Read_PSU1_temp() {

SetMux(ExtTemp1Input);
// Thermistor_R = 100000; // Needs to be set if different from default
Tempread();
PSU1_temp = Temperature;

}

//-------------------

void Read_Air_temp() {

SetMux(ExtTemp2Input);
// Thermistor_R = 100000; // Needs to be set if different from default
Tempread();
Air_temp = Temperature;

}

//---------------------
//
// Reading thermistor temperature

void Tempread() {

uint8_t i;
float average;
Temperature = 0;
for (i=0; i< NUMSAMPLES; i++) {
samples[i] = 0; // Take N samples in a row, with a slight delay
}
for (i=0; i< NUMSAMPLES; i++) {
samples[i] = analogRead(AnalogPin); // Take N samples in a row, with a slight delay
}
average = 0;
for (i=0; i< NUMSAMPLES; i++) {
average += samples[i]; // Average all the samples out
}
average /= NUMSAMPLES;

// Limit range to between 5 and 305 degrees

if (average < 16) { // Limiting to 305C maximum temp
average = 16;
}
if (average > 985) { // Limiting to 5C minimum temp
average = 985;
}

// Convert the value to resistance

average = 1024 / average - 1;
average = SERIESRESISTOR / average;

Temperature = average / Thermistor_R; // (R/Ro)
Temperature = log(Temperature); // ln(R/Ro)
Temperature /= BCOEFFICIENT; // 1/B * ln(R/Ro)
Temperature += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)
Temperature = 1.0 / Temperature; // Invert
Temperature -= 273.15; // convert to C
}

//--------------
//
// Read the analog input which is used for all analog inputs.
// The real inputs are multiplexed through a 74HC4067 multiplexer allowing 16 inputs.
//
void ReadAnalogIn(float R2, int MuxChan) {


SetMux(MuxChan); // Set multiplexer input first
Ain_val = 0;
for(int i = 0; i < NUMSAMPLES; i ++){
Ain_val = Ain_val + analogRead(AnalogPin); // read the input NUMSAMPLES times to avarage value
}
Ain_val = Ain_val / NUMSAMPLES; // Average out the readings
//
// Convert the analog value to real voltage
//
Voltage = (Ain_val * 5.041) / 1024.0;
Voltage = Voltage / (R2 / (R1 + R2));
}
//--------------
//
// Set the 74HC4067 multiplexr channel to be read.
//
int SetMux(int channel){

int controlPin[] = {s0, s1, s2, s3};

int muxChannel[16][4]={
{0,0,0,0}, //channel 0
{1,0,0,0}, //channel 1
{0,1,0,0}, //channel 2
{1,1,0,0}, //channel 3
{0,0,1,0}, //channel 4
{1,0,1,0}, //channel 5
{0,1,1,0}, //channel 6
{1,1,1,0}, //channel 7
{0,0,0,1}, //channel 8
{1,0,0,1}, //channel 9
{0,1,0,1}, //channel 10
{1,1,0,1}, //channel 11
{0,0,1,1}, //channel 12
{1,0,1,1}, //channel 13
{0,1,1,1}, //channel 14
{1,1,1,1} //channel 15
};

// Loop through the 4 nibbles representing the channel number
// and set the output to the right binary value

for(int i = 0; i < 4; i ++){
digitalWrite(controlPin[i], muxChannel[channel][i]);
}
}


Előzmény: Törölt felhasználó, 2021-01-10 14:23:14 [23102]


Törölt felhasználó    2021-01-10 14:23:14 [23102]

Sorba kötött tápegységek.

Válasz erre a kérdésre: 'Elektronika' téma, 23098. hozzászólás Igen, lehet sorba kötni azokat is, de tudni kell hogy mert problémákat okozhat ha rosszul van csinálva. Itt a leírás hogy én hogyan oldottam meg.

Van egy néhány 12V-os tápegységem és novemberben úgy döntöttem csinálok valami használható dolgot kettőből. Az egyik 3D printerem 12V-al és 24V-al működik és úgy döntöttem annak csinálok új tápegységet kettő 12V tápegységből. Az egyik PSU egy 12V/82A HP szerver PSU a másik meg egy mini komputerből van, 12V/7A. Miért nem mind a kettő egyfajta? Mert nem fért két HP szerver PSU a dobozba. Mind a kettőnek a DC GND a földhöz van kötve, úgyhogy a "felső" tápegységet eltávolítottam a földtől hogy ne okozzon problémát, de az alsót megtartottam hogy minden legyen jó és biztonságos. A "felső" tápegység műanyagba van, úgyhogy védőföldelés nem kell annak.

A sorba kötést úgy oldottam meg hogy ha a "felső" PSU valami hiba miatt, vagy túlterhelés miatt működése megszűnik akkor az elenged egy relét és az megállítja a 3D nyomtatást is. Azon kívül egy Arduino Uno műszert is csináltam ami méri a feszültségeket, áramokat és belső hőmérsékleteket, mutatja az időt meg a dátumot, meg mind a kettő tápegység állapotát. Zöld LED = minden rendbe van, kék LED = probléma egyik vagy másik (vagy mind a kettő) tápegység feszültségével, piros LED = egyik vagy másik (vagy mind a kettő) tápegység túl meleg.

Az Arduino LCD kicsit át van alakítva, eltávolítottam róla a touch panelt és nincs az SD kártya olvasó bekötve, mert nem kell nekem e-hez. Ezek ellenére a ki/bemenetek nem volt elég, ezt megoldottam egy 74HC4067 multiplexer modullal. A dátumot meg időt egy I2C Tiny RTC modul adja, úgy kell beállítani hogy a gombot meg kell nyomni és nyomva kell tartani amíg a fordítóprogram felrakja az új firmware programot. Ennek a hátránya hogy nem lehet beállítani külön, de ez nem fontos nekem jelenleg, de majd ha lesz időm átalakítom talán, mert van elég ki/be menet a multiplexeren keresztül ami szabad. De az RTC az csak fölösleges luxus, azért raktam be mert játszani akartam az RTC modullal.

Nem tudom ez valakinek kell vagy nem, de az .ino kódot is ide beraktam, bárki át tudja alakítani ha akarja. Nem IRQ-vel megy, mert ez lett az egyszerűbb, na meg erre nem fontos IRQ mert ezek a mérések nem kritikusak.

A kódot külön küldöm erre válaszra mert a fönti leírás hosszú lett...

        


Törölt felhasználó    2021-01-10 09:47:24 [23101]

Mérni kell ellenállást a GND és a föld között. Ha össze van kötve akkor 0 ohm az ellenállás. Természetesen mérés közbe ne legyen a tápegyseg bedugva...

Majd ma később írok újra képekkel mert most csináltam egy ijesmit én is.

Előzmény: csewe, 2021-01-09 19:59:40 [23100]


csewe | 2578    2021-01-09 19:59:40 [23100]

Van lehetőség a kimérésére?

Előzmény: Csuhás, 2021-01-09 19:41:36 [23099]

Csuhás | 6722    2021-01-09 19:41:36 [23099]

Ha földfüggetlen a táp, akkor igen.

Előzmény: csewe, 2021-01-09 19:31:15 [23098]


csewe | 2578    2021-01-09 19:31:15 [23098]

Sziasztok.

Kapcsolóüzemö tápok kimenetét sorba lehet kötni, hogy összeadódjon a feszültség?


svejk | 33038    2020-12-28 14:19:46 [23097]

A korrekt mérésekhez fékpad kellene.
Dobd fel a képét, hátha valaki ráismer.
Vagy keress hasonló kinézetűt, hasonló kubatúrával és persze ami fontos, hogy azonos fordulattal.

De ha elviszed egy tekercselőnek megmutatni az már szinte az ajtóból megsaccolja a kért adatot.

Előzmény: laacika, 2020-12-28 13:50:53 [23096]


laacika | 3145    2020-12-28 13:50:53 [23096]

Talán jó helyre irok,egy aszinkron villanymotor teljesítményét hogy lehet megmérni ha hiányzik az adattábla?
Üresjárati áramfelvételt kellene mérnem?


Geszti Sándor | 1139    2020-12-19 18:11:46 [23095]

Mert a gerjesztés talán 10százalékát igényli a teljesítménynek.A párhuzamost egyenről csináld.

Előzmény: svejk, 2020-12-19 15:28:06 [23091]


  Fórum főoldal  |  A lap tetejére

Időrend:
Oldal 32 / 492 Ugrás ide:
Sorok:
|◄ Első  ◄ Előző   28  29  30  31  32  33  34  35  36   Következő ►  Utolsó ►|


 ◊