Fórum témák

» Több friss téma
Fórum
Keresés
Lapozás: OK   7 / 198
(#) zamatőr hozzászólása Feb 20, 2024
Üdv!
Adott egy power bank amit óra tápként szeretnék használni de néhány másodperc után kikapcsol.Az óra áramfelvétele fél másodpercenként 100-200 mA rövid impulzus a szünetekben néhány uA. Az usb-n csak a táp vezeték van bekötve. Hogyan tudom folyamatos üzemre bírni a power bankot? + terhelést nem szeretnék bekötni.
Köszönöm.
A hozzászólás módosítva: Feb 20, 2024
(#) Gafly válasza TÉ288 hozzászólására (») Feb 12, 2024
Adatlap szerint nem megy tönkre:
Idézet:
„Analog Input Voltage (Either Input) (note 1) . . . . . . . . . . . . V+ to V-
Reference Input Voltage (Either Input). . . . . . . . . . . . . . . . . V+ to V-”
(#) Peter65 válasza Pixi hozzászólására (») Feb 7, 2024
Szia!
Ez sajnos nem ilyen egyszerű. Egy kommutátoros, univerzális motornak is lehetséges az úgynevezett szenzor mentes fordulatszám szabályozása, és így kis fordulaton is lesz érdemi nyomatéka, de ennek megvalósítása nem egyszerű, és nem univerzális. Az hogy nem univerzális, azt jelenti, hogy adott motorhoz illeszteni kell. A gyártó ismeri a fúrógépbe szerelt motor jellemzőit, és a szabályzó ezekhez a paraméterekhez illesztve képes a megfelelő szabályozásra. Hogy milyen jellegű számításokat, szabályozási feladatokat kell ellátni, itt egy link egy ilyen egyszerűbb szabályozási megoldásról szóló dokumentumhoz: Bővebben: Link Ez alapján beláthatod, hogy ilyen általános, univerzális fordulatszámot tartó szabályzót nem tudsz vásárolni. Vagy megveszed az eredetit, vagy megjavítod a régit, esetleg neki állsz, és a hobbi kedvéért megméred a motorod jellemzőit, és készítesz egy hozzá illeszkedő szabályzót.
A hozzászólás módosítva: Feb 7, 2024
(#) mcc válasza Karesz 50 hozzászólására (») Feb 2, 2024
DNF=do not fit
(#) Laslie hozzászólása Feb 1, 2024
Sziasztok!

Az általam készített Arduino alapú csengővel kapcsolatos további információk és a kód:
- A hang lejátszáshoz a TMRpcm lib-et használtam fel.
- A kód tartalmaz DEBUG módhoz további kód részleteket, amik az élesztéshez kellettek nekem. Ezt kikapcsoltam.
- Van benne SD kártya leállító és indító kód is. Bár ennek nem sok jelentősége van (kísérleteztem ), mivel trafóról fog nálam működni a csengő.
- Az isFnMusic() függvényben több fájlnév kiterjesztés is látható a WAV-on kívűl. Ez ne tévesszen meg senkit. Tudomásom szerint a TMRpcm lib csak WAV fájlt tud lejátszani.
- A kód tartalmaz egy kapcsolót is, mely az LM386 tápját hivatott ki/be kapcsolni.
  1. #include <avr/power.h>
  2. #include <avr/sleep.h>
  3. #include <avr/wdt.h>
  4.  
  5. #include <SPI.h>
  6. #include <SD.h>
  7. #include "TMRpcm.h"
  8.  
  9. const int chipSelect = 10;
  10. const int buttonPin = 2;
  11. const int fetPin = 3;
  12. int buttonState = 0;
  13. bool SDCardState = false;
  14. bool foundMusicFile = false;
  15.  
  16. TMRpcm tmrpcm;
  17.  
  18. byte keepSPCR;
  19. char musicFileName[128];
  20.  
  21. //#define __DEBUG__
  22.  
  23. void turnOnSDcard() {
  24.   delay(6);                                         // let the card settle
  25.                                                     // some cards will fail on power-up unless SS is pulled up  ( &  D0/MISO as well? )
  26.   DDRB = DDRB | (1<<DDB5) | (1<<DDB3) | (1<<DDB2);  // set SCLK(D13), MOSI(D11) & SS(D10) as OUTPUT
  27.                                                     // note: | is an OR operation so  the other pins stay as they were. (MISO stays as INPUT)
  28.   PORTB = PORTB & ~(1<<DDB5);                       // disable pin 13 SCLK pull-up – leave pull-up in place on the other 3 lines
  29.   power_spi_enable();                               // enable the SPI clock
  30.   SPCR = keepSPCR;                                  // enable SPI peripheral
  31.   delay(10);  
  32.   SDCardState = true;
  33. }
  34.  
  35. void turnOffSDcard()
  36.  {
  37.   delay(6);
  38.   SPCR = 0;                                                   // disable SPI
  39.   power_spi_disable();                                        // disable SPI clock
  40.   DDRB &= ~((1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2));   // set All SPI pins to INPUT
  41.   PORTB |= ((1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2));   // set ALL SPI pins HIGH (~30k pullup)
  42.   SDCardState = false;
  43. }
  44.  
  45. void initSDCard() {
  46.   #if defined (__DEBUG__)
  47.   while (!Serial);
  48.     Serial.print("Initializing SD card...");
  49.   #endif
  50.  
  51.   if (!SD.begin(chipSelect)) {
  52.     #if defined (__DEBUG__)
  53.     Serial.println("initialization failed. Things to check:");
  54.     Serial.println("1. is a card inserted?");
  55.     Serial.println("2. is your wiring correct?");
  56.     Serial.println("3. did you change the chipSelect pin to match your shield or module?");
  57.     Serial.println("note: press reset or reopen this serial monitor after fixing your issue!");
  58.     #endif
  59.     while (true);
  60.   }
  61.  
  62.   #if defined (__DEBUG__)
  63.   Serial.println("initialization done.");
  64.   #endif
  65.   File root = SD.open("/");
  66.   if (! foundMusicFile) {
  67.     searchMusicFile(root);
  68.     /*if (!foundMusicFile) {
  69.       musicFileName = "DINGDONG.WAV";
  70.     }*/
  71.     #if defined (__DEBUG__)
  72.     Serial.println(musicFileName);
  73.     #endif
  74.   }
  75.   #if defined (__DEBUG__)
  76.     printDirectory(root, 0);
  77.   #endif
  78.  
  79.   tmrpcm.speakerPin = 9;
  80.   tmrpcm.setVolume(5);
  81.   tmrpcm.quality(1);
  82. }
  83.  
  84. #if defined (__DEBUG__)
  85. void printregisters() {
  86.   byte aaa = TCCR1A;
  87.   Serial.print("TCCR1A: ");
  88.   Serial.println(aaa, BIN);
  89.   aaa = TCCR1B;
  90.   Serial.print("TCCR1B: ");
  91.   Serial.println(aaa, BIN);
  92.   aaa = ADCSRA;
  93.   Serial.print("ADCSA: ");
  94.   Serial.println(aaa, BIN);
  95.   aaa = ADCSRB;
  96.   Serial.print("ADCSRB: ");
  97.   Serial.println(aaa, BIN);
  98. }
  99. #endif
  100.  
  101. void setup() {
  102.   keepSPCR = SPCR;               // save the default SPCR register contents
  103.  
  104.   #if defined (__DEBUG__)
  105.   Serial.begin(9600);
  106.   printregisters();
  107.   #endif
  108.   initSDCard();
  109.   pinMode(buttonPin, INPUT);
  110.   pinMode(fetPin, OUTPUT);
  111.   digitalWrite(fetPin, LOW);
  112. }
  113.  
  114. void loop() {
  115.   if (!tmrpcm.isPlaying()) {
  116.     if (SDCardState) {
  117.       turnOffSDcard();
  118.       digitalWrite(fetPin, LOW);      
  119.       #if defined (__DEBUG__)
  120.       printregisters();
  121.       #endif
  122.     }
  123.     buttonState = digitalRead(buttonPin);
  124.   }
  125.   if (buttonState == HIGH) {
  126.     buttonState = LOW;
  127.     turnOnSDcard();
  128.     initSDCard();
  129.     digitalWrite(fetPin, HIGH);
  130.     tmrpcm.play(musicFileName);
  131.   }
  132. }
  133.  
  134. void searchMusicFile(File dir) {
  135.   while (true) {
  136.     File entry =  dir.openNextFile();
  137.     if (! entry) {
  138.       // no more files
  139.       break;
  140.     }
  141.  
  142.     if (entry.isDirectory()) {
  143.       searchMusicFile(entry);
  144.     } else {
  145.       if (isFnMusic(entry.name())) {
  146.         strncpy(musicFileName, entry.name(), 127);
  147.         entry.close();
  148.         foundMusicFile = true;
  149.         break;
  150.       }
  151.     }
  152.  
  153.     entry.close();
  154.   }
  155. }
  156.  
  157. bool isFnMusic(char* filename) {
  158.   int8_t len = strlen(filename);
  159.   bool result;
  160.   if (  strstr(strlwr(filename + (len - 4)), ".mp3")
  161.      || strstr(strlwr(filename + (len - 4)), ".aac")
  162.      || strstr(strlwr(filename + (len - 4)), ".wma")
  163.      || strstr(strlwr(filename + (len - 4)), ".wav")
  164.      || strstr(strlwr(filename + (len - 4)), ".fla")
  165.      || strstr(strlwr(filename + (len - 4)), ".mid")
  166.      // and anything else you want
  167.     ) {
  168.     result = true;
  169.   } else {
  170.     result = false;
  171.   }
  172.   return result;
  173. }
  174.  
  175. #if defined (__DEBUG__)
  176. void printDirectory(File dir, int numTabs) {
  177.   while (true) {
  178.     File entry =  dir.openNextFile();
  179.     if (! entry) {
  180.       // no more files
  181.       break;
  182.     }
  183.  
  184.     for (uint8_t i = 0; i < numTabs; i++) {
  185.       Serial.print('\t');
  186.     }
  187.  
  188.     Serial.print(entry.name());
  189.     if (entry.isDirectory()) {
  190.       Serial.println("/");
  191.       printDirectory(entry, numTabs + 1);
  192.     } else {
  193.       // files have sizes, directories do not
  194.       Serial.print("\t\t");
  195.       Serial.println(entry.size(), DEC);
  196.     }
  197.  
  198.     entry.close();
  199.   }
  200. }
  201. #endif
(#) Bakman válasza lefituta hozzászólására (») Feb 1, 2024
Esetleg a "Forget Me not" nevű bővítmény.
(#) KoblogPerGyok válasza treshold hozzászólására (») Jan 22, 2024
Szia!

Rég volt, hogy ilyet írtam, megkérdeztem az agyat, hátha:

  1. ; PIC18F16Q40 INT2 megszakítás kezelése
  2.  
  3. ; Az INT2 megszakítási vektor címe: 0x000C
  4. ; A vektori tábla elejének címe: 0x0000
  5.  
  6.     ORG 0x000C           ; Az INT2 megszakítási vektor címe
  7.     GOTO MyInt2Handler   ; Ugrás a kezelő rutinba
  8.  
  9. MyInt2Handler:
  10.     ; Ide írd be az INT2 megszakítás kezelő kódját
  11.     ; Például:
  12.     BSF STATUS, RP0      ; bank 1 kiválasztása
  13.     BCF INTCON3, INT2IF  ; INT2 megszakítás flag törlése
  14.     BCF STATUS, RP0      ; Vissza a bank 0-ba
  15.     ; További kód az INT2 megszakítás kezeléséhez
  16.  
  17.     RETFIE               ; Megszakításból való visszatérés


A megszakításaid címe jó? Nem kell a bank select? Hátha nem törli a flag-et.

Datasheet

A datasheet 116. oldalán az int0 0x08-on van, a tiéd, ami a programodban van ORG 0X0018
goto ISR_L az nem a SPI1RX (Serial Peripheral Interface) -nek van?

De álmos is vagyok, meg nem is tudtam nagyon átnézni, de hátha.
A hozzászólás módosítva: Jan 22, 2024
(#) treshold hozzászólása Jan 21, 2024
Segítséget kérnék az alábbiakhoz:
PIC18F16Q40-nél nem sikerül a megszakítást megírni Asseblyben.
Ez egy új generációs PIC és nem találok rá még hasonló minta progit sem
MPLAB X IDE V6.15-öt használok.
Feladat:
Alaphelyzetben 13. láb, LATB,4 kimeneten LED1 villog. (EZ MŰKÖDIK)
Ha a 17. láb INT2-re impulzus jön, akkor a 16. láb LATC,0 kimeneten LED2-nek világítania kell (megszakításba ugrás) majd villog tovább LED1.
A megszakításba ugrás nem működik.

  1. ; DATE: 2024.01.21. - UTOLSÓ MÓDOSITAS
  2.  
  3. PROCESSOR 18F16Q40
  4.    
  5. ; CONFIG1
  6.   CONFIG  FEXTOSC = OFF         ; External Oscillator Selection (Oscillator not enabled)
  7.   CONFIG  RSTOSC = HFINTOSC_64MHZ; Reset Oscillator Selection (HFINTOSC with HFFRQ = 64 MHz and CDIV = 1:1)
  8.  
  9. ; CONFIG2
  10.   CONFIG  CLKOUTEN = OFF        ; Clock out Enable bit (CLKOUT function is disabled)
  11.   CONFIG  PR1WAY = ON           ; PRLOCKED One-Way Set Enable bit (PRLOCKED bit can be cleared and set only once)
  12.   CONFIG  CSWEN = ON            ; Clock Switch Enable bit (Writing to NOSC and NDIV is allowed)
  13.   CONFIG  FCMEN = ON            ; Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor enabled)
  14.   CONFIG  FCMENP = ON           ; Fail-Safe Clock Monitor - Primary XTAL Enable bit (Fail-Safe Clock Monitor enabled; timer will flag FSCMP bit and OSFIF interrupt on EXTOSC failure.)
  15.   CONFIG  FCMENS = ON           ; Fail-Safe Clock Monitor - Secondary XTAL Enable bit (Fail-Safe Clock Monitor enabled; timer will flag FSCMP bit and OSFIF interrupt on SOSC failure.)
  16.  
  17. ; CONFIG3
  18.   CONFIG  MCLRE = EXTMCLR      ; MCLR Enable bit (If LVP = 0, MCLR pin is MCLR; If LVP = 1, RE3 pin function is MCLR )
  19.   CONFIG  PWRTS = PWRT_OFF      ; Power-up timer selection bits (PWRT is disabled)
  20.   CONFIG  MVECEN = OFF          ; Multi-vector enable bit (Interrupt contoller does not use vector table to prioritze interrupts)
  21.   CONFIG  IVT1WAY = ON          ; IVTLOCK bit One-way set enable bit (IVTLOCKED bit can be cleared and set only once)
  22.   CONFIG  LPBOREN = OFF        ; Low Power BOR Enable bit (Low-Power BOR disabled)
  23.   CONFIG  BOREN = SBORDIS       ; Brown-out Reset Enable bits (Brown-out Reset enabled , SBOREN bit is ignored)
  24.  
  25. ; CONFIG4
  26.   CONFIG  BORV = VBOR_1P9       ; Brown-out Reset Voltage Selection bits (Brown-out Reset Voltage (VBOR) set to 1.9V)
  27.   CONFIG  ZCD = OFF             ; ZCD Disable bit (ZCD module is disabled. ZCD can be enabled by setting the ZCDSEN bit of ZCDCON)
  28.   CONFIG  PPS1WAY = ON          ; PPSLOCK bit One-Way Set Enable bit (PPSLOCKED bit can be cleared and set only once; PPS registers remain locked after one clear/set cycle)
  29.   CONFIG  STVREN = ON           ; Stack Full/Underflow Reset Enable bit (Stack full/underflow will cause Reset)
  30.   CONFIG  LVP = ON              ; Low Voltage Programming Enable bit (Low voltage programming enabled. MCLR/VPP pin function is MCLR. MCLRE configuration bit is ignored)
  31.   CONFIG  XINST = OFF           ; Extended Instruction Set Enable bit (Extended Instruction Set and Indexed Addressing Mode disabled)
  32.  
  33. ; CONFIG5
  34.   CONFIG  WDTCPS = WDTCPS_31    ; WDT Period selection bits (Divider ratio 1:65536; software control of WDTPS)
  35.   CONFIG  WDTE = OFF            ; WDT operating mode (WDT Disabled; SWDTEN is ignored)
  36.  
  37. ; CONFIG6
  38.   CONFIG  WDTCWS = WDTCWS_7     ; WDT Window Select bits (window always open (100%); software control; keyed access not required)
  39.   CONFIG  WDTCCS = SC           ; WDT input clock selector (Software Control)
  40.  
  41. ; CONFIG7
  42.   CONFIG  BBSIZE = BBSIZE_512   ; Boot Block Size selection bits (Boot Block size is 512 words)
  43.   CONFIG  BBEN = OFF            ; Boot Block enable bit (Boot block disabled)
  44.   CONFIG  SAFEN = OFF           ; Storage Area Flash enable bit (SAF disabled)
  45.   CONFIG  DEBUG = OFF           ; Background Debugger (Background Debugger disabled)
  46.  
  47. ; CONFIG8
  48.   CONFIG  WRTB = OFF            ; Boot Block Write Protection bit (Boot Block not Write protected)
  49.   CONFIG  WRTC = OFF            ; Configuration register Write Protection bit (Configuration registers not Write protected)
  50.   CONFIG  WRTD = OFF            ; Data EEPROM Write Protection bit (Data EEPROM not Write protected)
  51.   CONFIG  WRTSAF = OFF          ; SAF Write protection bit (SAF not Write Protected)
  52.   CONFIG  WRTAPP = OFF          ; Application Block write protection bit (Application Block not write protected)
  53.  
  54. ; CONFIG9
  55.   CONFIG  CP = ON               ; PFM and Data EEPROM Code Protection bit (PFM and Data EEPROM code protection enabled)
  56.  
  57.  #include <xc.inc>
  58.  
  59. #define     LED1        LATB,4
  60. #define     LED2        LATC,0   ;HANG
  61.  
  62.  ; Variable settings
  63.  
  64. STATUS_TEMP     EQU             0x000   ; w register for context saving (ACCESS)
  65. WREG_TEMP       EQU             0x001   ; status used for context saving
  66. BSR_TEMP        EQU             0x002   ; bank select used for ISR context saving
  67. FLAG            EQU             0x003   ; Jelz?bit     
  68. FLAG_FLAG       EQU             0x004   ; Jelz?bit
  69.  
  70. Delay1          equ     0x77              ; Define two file registers for the
  71. Delay2          equ     0x78                ; delay loop
  72. Delay3          equ     0x79                ; delay loop
  73. Delay4          equ     0x7A                ; delay loop
  74.  
  75.   PSECT resetVec,class=code,delta=2
  76.   resetVect:
  77.     PAGESEL main
  78.     goto main
  79.    
  80. ;*******[ Magas szint? megszakítás kezel? rutin KEZDETE ]************************************
  81.  
  82.         ORG     0X0008
  83.         goto    ISR_H
  84.  
  85. ;*******[ Alacsony szint? megszakítás kezel? r11utin KEZDETE ]************************************
  86.  
  87.         ORG     0X0018
  88.         goto    ISR_L
  89.        
  90. ;*******[ A tényleges alacsony szint? megszakítás rutin ]***************************************
  91. ISR_L:
  92.     ; Context Saving for Low ISR
  93.         movff   STATUS,STATUS_TEMP      ;save STATUS register
  94.         movff   WREG,WREG_TEMP          ;save working register
  95.         movff   BSR,BSR_TEMP            ;save BSR register
  96.        
  97.         bsf     LATC,0
  98.         bcf     PIR10,0         ;INT2 FLAG törlés
  99.        
  100.                 movff   BSR_TEMP,BSR            ;restore BSR register
  101.         movff   WREG_TEMP,WREG          ;restore working register
  102.         movff   STATUS_TEMP,STATUS      ;restore STATUS register
  103.     RETFIE
  104.    
  105.    
  106.     ;*******[ A tényleges magas szint? megszakítás rutin ]***************************************
  107.    
  108.  
  109. ISR_H:
  110.     ; Context Saving for High ISR
  111.         movff   STATUS,STATUS_TEMP      ;save STATUS register
  112.         movff   WREG,WREG_TEMP          ;save working register
  113.         movff   BSR,BSR_TEMP            ;save BSR register
  114.        
  115.         bsf     LATC,0
  116.         bcf     PIR10,0         ;INT2 FLAG törlés
  117.        
  118.         movff   BSR_TEMP,BSR            ;restore BSR register
  119.         movff   WREG_TEMP,WREG          ;restore working register
  120.         movff   STATUS_TEMP,STATUS      ;restore STATUS register
  121.     RETFIE
  122.    
  123.  PSECT code
  124.  main:
  125.    
  126.    Oscillator_settings:
  127. ;    movlw   01100000B;// NDIV 1; NOSC HFINTOSC;
  128.  ;   movwf   OSCCON1
  129.  
  130.     movlw   0x0;// SOSCPWR Low power; CSWHOLD may proceed;
  131.     movwf   OSCCON3
  132.    
  133.     movlw   0x0;// EXTOEN disabled; HFOEN disabled; MFOEN disabled; LFOEN disabled; SOSCEN disabled; ADOEN disabled;
  134.     movwf   OSCEN
  135.    
  136.     movlw   00000110B; // HFFRQ 32_MHz xxxx0110;
  137.     movwf   OSCFRQ
  138.    
  139.     movlw   0x0;// TUN undefined;
  140.     movwf   OSCTUNE
  141.    
  142.     movlw   0x0;// ACTEN disabled; ACTUD enabled;
  143.     movwf   ACTCON
  144.    
  145. bankSEL PORTB ;
  146. CLRF PORTA ;Clear PORTB
  147. CLRF PORTB ;Clear PORTB
  148. CLRF PORTC ;Clear PORTC
  149.    
  150. bankSEL LATB ;
  151. CLRF LATA ;Clear Data Latch
  152. CLRF LATB ;Clear Data Latch
  153. CLRF LATC ;Clear Data Latch
  154.    
  155. bankSEL ANSELB ;
  156. CLRF ANSELA ;Enable digital drivers
  157. CLRF ANSELB ;Enable digital drivers
  158. CLRF ANSELC ;Enable digital drivers
  159.    
  160. bankSEL TRISB ;
  161. movlw   00000100B   ;Ra2 BE
  162. movwf   TRISA
  163. movlw   00100000B   ;RB4 Ki, RB5 be
  164. movwf   TRISB
  165. CLRF    TRISC        ;RC0 ki, RC7 ki
  166.    
  167. movlw   11100000B   ;Megszakítás, INT2 megszakítás lefutó élre
  168. movwf   INTCON0
  169.    
  170. movlw   00000001B   ;(INT2IF) External Interrupt 2 Interrupt Priority
  171. movwf   IPR10
  172.    
  173. movlw   00000001B   ;(INT2IE) External Interrupt 2 Interrupt Enable
  174. movwf   PIE10
  175.    
  176. movlw   11000000B   ;
  177. movwf   INTCON1
  178.  
  179. MainLoop:
  180. bsf         LATB,4             ; turn on LED1
  181. call    SUBRUTIN
  182. bcf         LATB,4             ; Turn off LED1
  183. call    SUBRUTIN
  184. bra          MainLoop            ; Do it again...
  185.  
  186. SUBRUTIN:
  187. OndelayLoop:
  188.      decfsz    Delay1, f            ; Waste time.  
  189.      goto      OndelayLoop         ;
  190.      decfsz    Delay2, f            ;
  191.      goto      OndelayLoop         ;
  192.      decfsz    Delay3,F            ;
  193.      goto      OndelayLoop  
  194.      decfsz    Delay4,F            ;
  195.      goto      OndelayLoop
  196.      return                        ;
  197.                    
  198.      END resetVect;reset_vec
A hozzászólás módosítva: Jan 23, 2024
Moderátor által szerkesztve
(#) tufatofu hozzászólása Jan 18, 2024
Sziasztok!
Járt már hasonlóképpen valaki?
Vettem az asszonynak karácsonykor üzletben egy Xiaomi Redmi note 12 telefont, mert a fiam azt mondta, hogy ezeket már telefonnak lehet nevezni. 4.-én már vissza is vittem a boltba mert nem volt hajlandó tölteni semmiféle módon.
Szerintetek jobb lett volna akkor elállni a vásárlástól? Mi a gyakorlat ilyenkor? Megpróbálják megkókányolni, mert ez nekem nem tűnt olyan könnyen szétszedhetőnek. A bolt meddig ülhet egy ilyen "javításon", ill. mikor köteles kicserélni egy újra?
Köszönöm a válaszokat!
(#) Massawa válasza Massawa hozzászólására (») Jan 11, 2024
Egy ujabb fejlemény ( erröl nem is tudtam), hogy a SW hibáját elöször a posta ( bank) alkalmazottjaira kenték és kb 700 alkalmazottat büntettek meg. A bank alkalmazottajait ezért, mert a SW hiányt jelzett sok számlán amit lopásnak minösitettek.
Most a parlament dönt arrol, hogy kegyelmet és kártalanitást kapnak, de több mint 10 éves büntetett priusz rengeteg embert közülük csödbe vitt. ( egyszerü alkalmazottaktol bankfiok igazgatoig mindenki elöfordul a listán).
Egy szoftware hiba miatt.
(#) Massawa válasza sargarigo hozzászólására (») Jan 10, 2024
Mit tud a kuncsaft tenni, amikor átveri a bank (illetve magát a bankot is átveri valaki más)?
Ha meg marad valami apropénze biztos, hogy átmegy máshova, de ha nem marad semmi csak fizethetlen hitel akkor mi van?
Talán meg emlékszünk a devizahitelekre.
Külföldön ez sokkal gyakoribb, nem ritkán éjjel nappal jönnek a financiális mézesmadzagok, és sajnos mindig van egy réteg aki ész nélkül ráragad.
Ha meg baj van, láthatod az esetben is, 36 évvel késöbb kerülsz sorra a kártéritésre. És azt sem tudjuk ki mennyit kap vissza, általában soha nem annyit amit vesztett.
Nem ritkán a pénzügyek sajnos piramis játék szerüen épülnek fel, és gyakran annyira alattomosan, hogy még nagy és megbizhatonak tartott bankok is a vesztesek közé kerülnek. Föleg az angolszász világban a bank filozofia nagyon eltér a nálunk megszokottol. Ott bizonyos összeg felett a kuncsaft „befektet“ , ami mindig rizikoval jár.
(#) Massawa válasza majkimester hozzászólására (») Jan 10, 2024
Azért figyelhetnél jobban az irottakra.

1. a SW-t 36 évvel ezelött kezdték használni. ( kb 1988)
2. Többször merült fel közben, hogy valami nincs rendben. (valoszinü a banknak is)
3. a cég egyfolytában tagadott 2003-ig ( visszaélt az eröfölénnyel), amikor sikerült bebizonyitani a hibát.

Te gondolod, hogy idöközben nem voltak upgradek stb. söt valoszinü, hogy a HW is közben (többször) cserélödött, mégsem történt semmi. És valoszinü nem a kuncsaft reklamált, hanem a bank meg végül valoszinüleg egy megbizott, szintén SW specialista cég, akik be tudták bizonyitani a hibát.

( látod mi történik hasonlo esetekben a repülögépekkel, autokkal, vonatokkal stb. Az utolso csavarig szétszedik, és mindent tüzetesen átviszgálnak, még azt is kideritik, ki huzta az utolso vonalat a rajzokra és levonják a konzekvenciát. Ilyesmit eddig nem igen hallottunk, ha a SW-ben fordul elö a hiba.)
A hozzászólás módosítva: Jan 10, 2024
(#) img válasza xxxyyy hozzászólására (») Jan 10, 2024
Egyetértek, szintén zenész.

https://forum.vcfed.org/index.php?threads/486-l2-cache-not-working.1241500/
A hozzászólás módosítva: Jan 10, 2024
(#) majkimester válasza Massawa hozzászólására (») Jan 9, 2024
Idézet:
„Ezekszerint a szoftware fejlesztök valahogy nem felelösek a munkájuk minösegéért.”

Komolyabb helyeken a szoftvert megrendelő ügyfél, jelen esetben a bank saját maga végez(tet) egy UAT-t (User Acceptance Test) Ennek célja, hogy a valós környezetben bebizonyítani, hogy a sw a követelményeknek maradéktalanul megfelel. Ha az nem történt meg vagy nem elég alaposan akkor a bank hibázott. Ha az UAT eredményét a bank elfogadta, akkor ő bizonyíthatóan elismerte, hogy a sw megfelel a követelményeknek. Ez után kár mutogatni a sw fejlesztőre.
A hozzászólás módosítva: Jan 9, 2024
(#) Massawa hozzászólása Jan 9, 2024
Angol barátaim meselik, hogy mi történt az utobbi 36 evben.
Az egyik neves bank ( fiokjai voltak minden településen) egy rossz szoftwaret használt. A szoftver gyártoja évekig tagadta, hogy hibás lenne. A betétesek ezrei vesztették el a pénzüket.
Mintegy 20 éve a hatoságok bebizonyitották, hogy valoban hiba van a szoftwareben, és kényszeritették a neves közismert céget a javitásra.
Most jutott el a biroság a kártalanitàsra ( már aki meg él a károsultak közül), de érdekes modon senkit nem vontak felelöségre. Pedig sokan vesztették nemcsak a pénzüket, de a házukat lakásukat is.
Ezekszerint a szoftware fejlesztök valahogy nem felelösek a munkájuk minösegéért.
(#) Udvari Zsombor válasza Régi motoros hozzászólására (») Jan 6, 2024
Gondolj bele, a fényérzékelő nem tudja megkülönböztetni, hogy körülötte van fény vagy a saját fényét érzékeli, tehát normális, hogy kivárja a beállított időtartamot, míg lekapcsol.
"This is a feature, not a bug."
(#) asch válasza andyka hozzászólására (») Jan 5, 2024
Bocs, közben megnéztem a linkelt leírást is. Ő huntingnak nevezi a jelenséget és ír róla, hogy előfordulhat és hogy kell javítani:
"note that when used as a servo or speed control, you will experience hunting if the gain is too high, and/or if the feedback caps (C1 and C2) are too small (the arrangement shown below didn't require the caps). Hunting means that the servo will 'hunt' for the correct setting, but will overshoot and undershoot continuously"
Tehát vagy a gain túl nagy, vagy a C1 C2 túl kicsi.

>Három huzalja van: gnd és két + szál, egyik forgatja erre, a másik meg arra
Belül mi lehet benne? Hogy működik?

Azért nem biztos, hogy jó ötlet az analóg szabályozás, mert esetleg kis eltérésre folyni fog áram, de épp nem indul be a motor és feleslegesen melegítheti a szabályzó. Persze ha nem ég le, akkor mindegy. Meg nem is vagyok teljesen biztos benne, hogy előállhat ez a helyzet. Analóg rendszereken szerintem sokkal nehezebb hibát keresni, és például jelen helyzetben nehezebb beállítani a lengés mentes szabályozást is.
(#) glaci hozzászólása Dec 30, 2023
Sziasztok!
Működik a rendszer, de van azért hibája. Előfordul, hogy be se lép a while(1) részbe, csak esetenként a második bekapcsolásra. Van úgy, hogy megáll (lefagy) a 400ms késleltetés után és nem folytatódik a végtelen ciklus.

  1. /*PIC16F887  8MHz belső oszcillátor
  2. KÖZELEDÉS ÉRZÉKELŐ HC-SR04 ultrasonic szenzorral
  3.  
  4. */
  5.  
  6.  // LCD module connections
  7. sbit LCD_RS at RD2_bit;
  8. sbit LCD_EN at RD3_bit;
  9. sbit LCD_D4 at RD4_bit;
  10. sbit LCD_D5 at RD5_bit;
  11. sbit LCD_D6 at RD6_bit;
  12. sbit LCD_D7 at RD7_bit;
  13.  
  14. sbit LCD_RS_Direction at TRISD2_bit;
  15. sbit LCD_EN_Direction at TRISD3_bit;
  16. sbit LCD_D4_Direction at TRISD4_bit;
  17. sbit LCD_D5_Direction at TRISD5_bit;
  18. sbit LCD_D6_Direction at TRISD6_bit;
  19. sbit LCD_D7_Direction at TRISD7_bit;
  20. // End LCD module connections
  21. //változók
  22.   int a;
  23.   char txt[7];
  24.  
  25. void main()
  26. {  
  27.   OSCCON=0x70;
  28.   C1ON_bit=0;
  29.   C2ON_bit=0;
  30.   INTCON.GIE=0;
  31.   ANSEL=0;
  32.   ANSELH=0;
  33.   TRISB = 0b00010000;           //RB4 bemenet PIN (ECHO)
  34.   TRISD=  0b00000000;            //minden RD kapu kimenet
  35.   Lcd_Init();
  36.   Lcd_Cmd(_LCD_CLEAR);          // Clear display
  37.   Lcd_Cmd(_LCD_CURSOR_OFF);     // Cursor off
  38.   PORTB.F0=0;                   //trig kimeneti jel
  39.   //PORTB.F4=0;
  40.     Lcd_Out(1,1,"HC-SR4");
  41.     Delay_ms(2000);
  42.     Lcd_Cmd(_LCD_CLEAR);
  43.     T1CON = 0x10;
  44.  
  45.    while(1)
  46.   {  
  47.     TMR1H = 0;
  48.     TMR1L = 0;
  49.  
  50.     PORTB.F0 = 1;               //TRIGGER HIGH
  51.     Delay_us(10);               //10uS Delay
  52.     PORTB.F0 = 0;               //TRIGGER LOW
  53.     while(!PORTB.F4);           //várjuk az echo jelet high
  54.     T1CON.F0 = 1;               //Timer Starts
  55.     while(PORTB.F4);            //várjuk az echo jel végét LOW
  56.     T1CON.F0 = 0;               //Timer Stops
  57.  
  58.     a = (TMR1L | (TMR1H<<8));   //Reads Timer Value
  59.     a = a/58.82;                //Converts Time to Distance
  60.     a = a + 1;                  //Distance Calibration
  61.  
  62.     if(a>=2 && a<=400)          //Check whether the result is valid or not
  63.     {
  64.       Lcd_Out(1,1,"itt vagyok");
  65.       IntToStr(a,txt);
  66.       Ltrim(txt);
  67.       Lcd_Cmd(_LCD_CLEAR);
  68.       Lcd_Out(1,1,"Distance = ");
  69.       Lcd_Out(1,12,txt);
  70.       Lcd_Out(1,15,"cm");
  71.     }
  72.     else
  73.     {
  74.       Lcd_Cmd(_LCD_CLEAR);
  75.       Lcd_Out(1,1,"Out of Range");
  76.     }
  77.    
  78.     Delay_ms(400);
  79.        // Lcd_Cmd(_LCD_CLEAR);
  80.     Lcd_Out(2,1,"itt vagyok6");
  81.   }
  82.  
  83. }
(#) glaci hozzászólása Dec 29, 2023
Sziasztok!
Mint az előbbi kérdésemben elővezettem, sok a tudatlanságom!
Most hogy az idők rendben vannak a kérdés az, hogy miért nem lép ki while(!PORTB.F4); ciklusból a program, pedig a feltétel változik.

/*PIC16F887 8MHz belső oszcillátor
KÖZELEDÉS ÉRZÉKELŐ HC-SR04 ultrasonic szenzorral

*/

// LCD module connections
sbit LCD_RS at RD2_bit;
sbit LCD_EN at RD3_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;

sbit LCD_RS_Direction at TRISD2_bit;
sbit LCD_EN_Direction at TRISD3_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;
// End LCD module connections
//változók
int a;
char txt[7];

void main()
{
OSCCON=0b01110101;
TRISB = 0b00010000; //RB4 bemenet PIN (ECHO)
TRISD= 0b00000000; //minden RD kapu kimenet
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
PORTB.F0=0; //trig kimeneti jel
//PORTB.F4=0;
Lcd_Out(1,1,"HC-SR4");
Delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR);
T1CON = 0x10;

while(1)
{
TMR1H = 0;
TMR1L = 0;

PORTB.B0 = 1; //TRIGGER HIGH
Delay_us(10); //10uS Delay
PORTB.B0 = 0; //TRIGGER LOW

Lcd_Out(1,1,"itt vagyok");
while(!PORTB.F4); //Waiting for Echo

T1CON.F0 = 1; //Timer Starts
while(PORTB.F4); //Waiting for Echo goes LOW
T1CON.F0 = 0; //Timer Stops

a = (TMR1L | (TMR1H<<8)); //Reads Timer Value
a = a/58.82; //Converts Time to Distance
a = a + 1; //Distance Calibration
if(a>=2 && a<=400) //Check whether the result is valid or not
{
IntToStr(a,txt);
Ltrim(txt);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Distance = ");
Lcd_Out(1,12,txt);
Lcd_Out(1,15,"cm");
}
else
{
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"Out of Range");
}

Delay_ms(400);
}

}
  1.  
A hozzászólás módosítva: Dec 29, 2023
(#) Frankye hozzászólása Dec 27, 2023
Sziasztok!
Nemrégiben gépcsere volt nálam, a régi XP-s Win cserére került Win10-re. Ezzel együtt a korábbi Flowcode-om is megszánt létezni. Letöltöttem a díjmentes verziót, ez azonban nem hozza létre a kívánt hex-et. Az alábbi hibaüzenetet dobja:
Idézet:
„You do not have a valid licence to perform this action”

(Amennyiben a HEX-be fordítást választom.)
Hogyan lehet ezt kiküszöbölni?
Előre is köszönöm a választ!
(#) Laslie válasza asch hozzászólására (») Dec 13, 2023
Ezt csináltam, a leírások alapján:
  1. #include <SPI.h>
  2. #include <SD.h>
  3. #include "TMRpcm.h"
  4. #include "LowPower.h"
  5.  
  6. const int chipSelect = 10;
  7. const int wakeUpPin = 2;
  8. const int fetPin = 3;
  9. int buttonState = 0;
  10.  
  11. TMRpcm tmrpcm;
  12. File root;
  13.  
  14. void wakeUp() {
  15.   buttonState = HIGH;
  16.   detachInterrupt(digitalPinToInterrupt(wakeUpPin));
  17. }
  18.  
  19. void initSDCard() {
  20.   while (!Serial);
  21.     Serial.print("Initializing SD card...");
  22.  
  23.   if (!SD.begin(chipSelect)) {
  24.     Serial.println("initialization failed. Things to check:");
  25.     Serial.println("1. is a card inserted?");
  26.     Serial.println("2. is your wiring correct?");
  27.     Serial.println("3. did you change the chipSelect pin to match your shield or module?");
  28.     Serial.println("note: press reset or reopen this serial monitor after fixing your issue!");
  29.     while (true);
  30.   }
  31.  
  32.   Serial.println("initialization done.");
  33.   root = SD.open("/");  
  34.   tmrpcm.speakerPin = 9;
  35.   tmrpcm.setVolume(5);
  36.   tmrpcm.quality(1);
  37. }
  38.  
  39. void setup() {
  40.   Serial.begin(9600);
  41.   pinMode(wakeUpPin, INPUT);
  42.   pinMode(fetPin, OUTPUT);
  43.   digitalWrite(fetPin, LOW);
  44. }
  45.  
  46. void loop() {
  47.   buttonState = LOW;
  48.   attachInterrupt(digitalPinToInterrupt(wakeUpPin), wakeUp, RISING);
  49.   LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
  50.   if (buttonState == HIGH) {
  51.     initSDCard();
  52.     digitalWrite(fetPin, HIGH);
  53.     tmrpcm.play("DINGDONG.WAV");
  54.     digitalWrite(fetPin, LOW);
  55.   }
  56. }
(#) sargarigo válasza vill hozzászólására (») Dec 13, 2023
Nem próbáltam, nézd meg! Gondolatot ébreszteni..
  1. #include <Wire.h>
  2. #include <Adafruit_BMP180.h>
  3. Adafruit_BMP180 bmp;
  4.  
  5. const int relayPin = 8; // A relé csatlakoztatásának pinje
  6.  
  7. float previousTemperature = 0.0;
  8.  
  9. void setup() {
  10.   Serial.begin(9600);
  11.  
  12.   if (!bmp.begin()) {
  13.     Serial.println("Could not find a valid BMP180 sensor, check wiring!");
  14.     while (1);
  15.   }
  16.  
  17.   pinMode(relayPin, OUTPUT);
  18. }
  19.  
  20. void loop() {
  21.   float currentTemperature = bmp.readTemperature();
  22.  
  23.   Serial.print("Current Temperature: ");
  24.   Serial.print(currentTemperature);
  25.   Serial.println(" °C");
  26.  
  27.   delay(600000); // 10 perc várakozás
  28.  
  29.   float newTemperature = bmp.readTemperature();
  30.  
  31.   Serial.print("New Temperature: ");
  32.   Serial.print(newTemperature);
  33.   Serial.println(" °C");
  34.  
  35.   if (newTemperature > currentTemperature) {
  36.     digitalWrite(relayPin, HIGH); // A relé bekapcsol
  37.     Serial.println("Relay ON");
  38.   } else {
  39.     digitalWrite(relayPin, LOW); // A relé kikapcsol
  40.     Serial.println("Relay OFF");
  41.   }
  42.  
  43.   previousTemperature = newTemperature;
  44. }
A hozzászólás módosítva: Dec 13, 2023
(#) bbb válasza img hozzászólására (») Dec 11, 2023
Az SSDMP programot ajánlották hozzá, ami hajlandó is megszólítani, mint RTS5735DL vezérlő. Viszont amit találna magának B47R memóriatípust, arra jön a hiba:
Idézet:
„Step 00 Generate Config -> Fail nand_support_list -> NandType : B47R, bank*.ram file -> NandType : B72B, Config mismatch”

Illetve másik SSDMP verzió már RM1135-ként is kezeli, de a memóriára ugyan ez a panasza.
A hozzászólás módosítva: Dec 11, 2023
(#) Laslie hozzászólása Dec 11, 2023
Sziasztok!

Szeretnék készíteni egy csengőt. (Tudom, hogy lehet kapni, de az nem olyan, mert ebben ugye ott a hobbi meg a kihívás. )

Szóval a kapcsolás a következő:
- Arduino Nano
- SD kártya
- nyomógomb
- FET az LM386 táp kapcsolásához
- LM386-ra épülő erősítő
(Mellékelem a kapcsolási rajzot)

A programot sikerült összeraknom (természetesen nem magam találtam ki. Google a barátom. )
Működik is, ha megnyomom a gombot, akkor lejátssza a wav fájlt. Eddig jó, de szeretném úgy módosítani a programot, hogy az Ardu-t szeretném elaltatni, majd ha a nyomógombot megnyomom, akkor feléledve játssza le a wav fájlt, majd ha vége, akkor ismét menjen aludni.
Na itt kezdődik a problémám. A kódot módosítva el is megy alvásba a CPU, majd a gomb megnyomására csak zúgást lehet hallani a hangszóróból.
Végig próbáltam már egy csomó példakódot, természetesen a doksit is elolvastam, és abból is próbáltam információt szerezni, de a helyzet nem változott.

A kérdésem az lenne, hogy miként tudnám a CPU-t elaltatni, majd a gomb megnyomására lejátszani a wav fájlt? Ebben kérnék segítséget. Előre is köszönöm.

Íme a működő kód:
  1. #include <SPI.h>
  2. #include <SD.h>
  3. #include "TMRpcm.h"
  4.  
  5. const int chipSelect = 10;
  6. const int buttonPin = 2;
  7. const int fetPin = 3;
  8. int buttonState = 0;
  9.  
  10. TMRpcm tmrpcm;
  11. File root;
  12.  
  13. void initSDCard() {
  14.   while (!Serial);
  15.     Serial.print("Initializing SD card...");
  16.  
  17.   if (!SD.begin(chipSelect)) {
  18.     Serial.println("initialization failed. Things to check:");
  19.     Serial.println("1. is a card inserted?");
  20.     Serial.println("2. is your wiring correct?");
  21.     Serial.println("3. did you change the chipSelect pin to match your shield or module?");
  22.     Serial.println("note: press reset or reopen this serial monitor after fixing your issue!");
  23.     while (true);
  24.   }
  25.  
  26.   Serial.println("initialization done.");
  27.   root = SD.open("/");
  28.   tmrpcm.speakerPin = 9;
  29.   tmrpcm.setVolume(5);
  30.   tmrpcm.quality(1);
  31. }
  32.  
  33. void setup() {
  34.   Serial.begin(9600);
  35.   initSDCard();
  36.   pinMode(buttonPin, INPUT);
  37.   pinMode(fetPin, OUTPUT);
  38.   digitalWrite(fetPin, LOW);
  39. }
  40.  
  41. void loop() {
  42.   buttonState = digitalRead(buttonPin);
  43.   if (buttonState == HIGH) {
  44.     digitalWrite(fetPin, HIGH);
  45.     tmrpcm.play("DINGDONG.WAV");
  46.     digitalWrite(fetPin, LOW);
  47.   }
  48. }
A hozzászólás módosítva: Dec 11, 2023
(#) pucuka válasza tönöpö hozzászólására (») Dec 9, 2023
Azt még eel kéne dönteni, hogy a háromfázisú gép szinkron, vagy aszinkron.
Szinkron motornál (állandó mágnesek vannak benne, általában a forgórészben) csak a frekvenciától függ a fordulatszám, ha túlterhelés hatására kiesik a szinkronból, akkor megáll. Aszinkron motornál csökken a fordulatszám a terhelés hatására, vagy a motoráram (feszültség) hatására, mert nő a slip, de ez is csak a billenő nyomatékig.
Kapcsolásom ugyan nincsen, de emlékeim szerint egyszer találtam egy kapcsolást a Microchip cég egyik AN xxx (application note) -jában. Elő kéne bányásznod.
(#) Tie hozzászólása Dec 2, 2023
Sziasztok,

Egy kis segítségre lenne szükségem, nem bírok magamtól rájönni a dolog nyitjára.
Összeraktam a kazánvezérlő PLC-m programját, gyönyörűen teszi is a dolgát, viszont szeretnék még belerakni egy kis funkciót. Nagyjából sejtem, hogy hogyan kéne, de nem bírom összerakni hogy tényleg működjön is.

Van ugyebár 6 bemenetem:
I00 - Földszinti szobatermosztát
I01 - Emeleti szobatermosztát
I02 - Puffer hőmérséklet a tetejénél (egy digitális termosztát 30+5fokra állítva [30 fok, 5 fok hiszterézissel, azaz 35 foknál BEkapcsol, 30 foknál KIkapcsol)
I03 - Puffer hőmérséklet az alsó harmadánál (ugyanolyan digit termosztát 30+25 fokra állítva, 55foknál BEkapcsol, 30 foknál KIkapcsol)
I04 - Bojler hőmérséklet (harmadik ugyanolyan digit termosztát, a bojlerben lévő hmv hőmérsékletét figyel)
I05 - ATMOS kazánszivattyú üzem - Azt figyeli, hogy jár-e az Atmos faelgázosító kazán szivattyúja (ha jár, akkor nem indítjuk a gázkazánt, mer' minek, hiszen éppen tüzelek a faelgázosítóban)

És van 4 darab kimenetem:
Q02 - Földszinti padlófűtés szivattyú indítása
Q03 - Emeleti padlófűtés szivattyú indítása
Q04 - Gázkazán váltószelep átállítása a puffer felől a bojler felé
Q05 - Gázkazán indítása

Az alap logika az alábbi:

- Ha bármelyik szobatermosztát kér hőt a házban, ÉS nem ég a tűz az ATMOS szivattyúban, akkor elindítjuk a gázkazánt. Ha ég a tűz az ATMOSban, akkor a gázkazán nem indul el, mer minek.

- Ha a pufferen a felső termosztát 35 foknál melegebbet mér, akkor elindítjuk a padlófűtés szivattyúkat, alatta leállítjuk őket, hogy ne hűtsék ki a padlót, ha valamiért mégsincs semmilyen fűtés (leég a faelgázosító, a gázkazánt kikapcsoltam, és elfogyott a pufferből a melegvíz)

- Ha a pufferen az alsó termosztát melegebbet mér, mint 55 fok, akkor leállítjuk a gázkazánt, hogy ne fűtsünk túl. Ha az alsó termosztát visszahűl 30 fok alá, újraindul a gázkazán, mert a termosztáton magán így állítottam be a hiszterézist

- Ha a bojler termosztát jelez, mert hideg a HMV a bojlerben, ÉS a puffer tele van melegvízzel (felső és alsó termosztát EGYSZERRE ON), VAGY üzemel az ATMOS, akkor megengedjük a gázkazánnak, hogy fűtsön a bojlerbe, azaz Gázkazán indítás ON, ÉS Gázkazán váltószelep ON.
Azért csináltam így a logikát, mert a ház fűtése a prioritás, és ha a pufferben van 500 liter 55 fokos víz, arról simán elmegy a két szint még két órát, a bojlert meg max fél óra alatt felfűti a gázkazán. Ha a pufferben kevés a melegvíz, akkor a gázkazán a házat fűti. és persze, ha ég a tűz az ATMOS-ban, akkor persze nyugodtan fűthet a gázkazán a bojlerre

Ezt a logikát jeleneleg a PLC 8 állapottal kezeli le, csatoltam a képeket.
PLC01 - alapállapot, semmi nem on.
PLC02 - bármelyik szobatermosztát kér hőt, ÉS nem ég az Atmos = elindul a gázkazán
PLC03 - elkezd telni a puffer felül, indulhatnak a padlószivattyúk is
PLC04 - A puffer 3/4-ig tele van 55 fokos vízzel, leáll a gázkazán, a szivattyúk továbbra is tolják a vizet a padlóba
PLC05 - A bojler kér hőt, de a puffer nincs tele = a gázkazán továbbra is üzemel, de nem állítjuk át a váltószelepet, továbbra is a pufferbe fűt
PLC06 - Puffer tele, bojler is kér hőt = gázkazán üzemel, váltószelep átvált a bojler felé
PLC07 - Puffer nincs tele, DE megy az Atmos (azaz a faelgázosítóval fűtöm a házat) ÉS kér a bojler hőt = indulhat a gázkazán, és átváltjuk a váltószelepet
PLC08 - Ég a tűz az Atmosban, bojler nem kér hőt, gázkazán letiltva.

Ez így tök jó. Viszont azt szeretném még belefaragni a programba, hogy a gázkazán csak akkor induljon ÚJRA amikor nem ég az ATMOS - vagy azért, mert be se gyújtottam, vagy azért, mert már leégett - amikor a puffer TELJESEN kihűl, azaz amikor kihúzta belőle a padlófűtés az összes melegvizet.

Azért szeretném ezt elérni, mert sokszor előfordul, hogy leég az ATMOS, a puffer felül 85 fokos, alul viszont csak 35, de a ház már csak egy óráig kér hőt, azaz tök felesleges ráfűteni a pufferre a gázkazánnal, mert a benne lévő 3-400 liter 85 fokos víz még bőven elég.

Jelen állapotban a gázkazán beindul, ha az alsó puffer termosztát 30 foknál hidegebbet mér, és nem indul el, ha 55 foknál melegebbet.

Azért is jó lenne ez a funkció, mert ha nem gyújtok be az ATMOSba, és csak a gázkazán fűt, akkor is csak akkor indulna újra, miután a felső puffer termosztát is lehűlt. Ezzel lehetne spórolni elég sokat, mert így az van, hogy amíg kér a ház hőt, és a pufi nincs tele, megy a gázkazán, aztán mikor lekapcsolnak a szobatermosztátok, ott állok 5-600 liter 55 fokos vízzel tök fölöslegesen. Ezt a felesges fűtést lehetne megspórolni, ha a gázkazán csak akkor indulna be újra, mikor az egész puffer újra csak 30 fokos.

Azon gondolkoztam, hogy valami olyan funkcióblokkot kéne berakni a puffer termosztátok jelei után, hogy "lefutó él figyelés", és azt összerakni egy ÉS blokkba, azaz a gázkazánt akkor indítjuk el, ha mindkét puffer termosztáton történt lefutó él, azaz BE-ről KI-kapcsolódtak, MINDKETTŐ. Azaz csak akkor, amikor a felső is lehűlt. De ezt nem sikerült sehogyse összeraknom eddig.

Az APB PLC-m ilyen funkcióblokkokat tud, ebből kéne megoldani valahogy:

ÉS
ANDL (kimenet akkor kapcsol, ha MINDEGYIK bemenet logikai 1 értéket vesz fel, ÉS a bemenetek közül egy az előző ciklusban NEM volt bekapcsolva)
VAGY
not (negálás, jelfordítás)
KIZÁRÓ VAGY
Negált ÉS
NANDL (a kimenet abban az esetben kapcsol, ha EGY bemenet logikai értéke 0, és az előző ciklusban MINDEN bemenet logikai 1 értékű volt)
Negált VAGY
VAGY felfutóü él figyeléssel
VAGY lefutó él figyeléssel (Ha legalább egy bemenet értéke egyről nullára vált, akkor a kimenet logikai 1 értéket vesz fel)

Tud még mindenféle mást is, mint pl TOND (Bekapcsolás késleltető), PONS (impulzus adó), SPBL (impulzus relé), BLNK (ütemadó), meg mindenféle egyebet is, de elvileg az alapokkal meg kéne tudni csinálni, nem?

Az első gondolatom az volt, hogy mindkét puffer termosztát jele után teszek egy "VAGY lefutó él figyeléssel" blokkot, amikbe semmi más nem lesz bekötve, csak maga a termosztát jele, és azokat összehozom egy ÉS blokkba, és ezzel megszakítom a gázkazán indítás előtti logikai sort.
Össze is raktam, kipróbáltam a szimulációban, de nem volt jó.

Na meg ugye, az is kell, hogy elsőre elinduljon a gázkazán, mert ha ez az alapállapot, akkor sose fog elindulni a gázkazán ELSŐRE, hiszen előtte nem történt a pufferben lefutó él egyik termosztáton se.

Tudnátok segíteni, hogy hogy kéne összerakjam ezt a plusz funkciót?
(#) Suba53 válasza proba hozzászólására (») Nov 28, 2023
Szerintem nem power bank modullal kellene megoldani, hanem inkább LiIon töltő modullal.
Azon az akku csatlakozón állandóan megvan a 3,7 - 4,2 V a töltöttségtől függően.
Az akku kivezetésre egy kis stepup konverter, ami az 5V-ot adja a kütyünek.

A power bank elsődleges funkciója a kimenet biztosítása, tehát ha a kimenet terhelve van, akkor nem tud tölteni. ( Ugyanaz az induktív kör van mindkét funkcióra. )
A hozzászólás módosítva: Nov 28, 2023
(#) diamik hozzászólása Nov 27, 2023
Sziasztok,

kutakodtam a neten és kicsit elbizonytalanodtam. Mielőtt bárki leszólna, inkább felvetem a dolgot, mint hogy rosszul tudjam. Sokszor volt, hogy magát tudományosnak beállító oldal butaságokat ír (ez most majd itt kiderül )

Egy és háromfázisú hálózatokról olvasgattam. Szembe jött ez a cikk: Why 3-Phase Power?

A cikk azt írja, hogy 3-fázisú hálózaton idézem angolul
Idézet:
„It clearly shows that the value of electric power in a three phase system is 1.732 (value of √3) times bigger than the power transmitted in a single phase supply system.”
Aki nem tudna angolul, ez kb. azt jelenti, hogy az egyfázishoz képest 1.732-vel nagyobb teljesítményt tudunk szállítani.

Ugyan nem ír se fázis se vonali feszültségről, de nekem úgy tűnik keveri a két fogalmat (csillag láncolás esetén Uf=Uv/gyök(3), illetve If = Iv nemde?

Vagy már csak este van nekem...
(#) segítő hozzászólása Nov 26, 2023
Audio note I zero erősítő (ECL82) kapcsolását keresem. Blokkvázlat is elegendő.
A hozzászólás módosítva: Nov 26, 2023
(#) shany válasza Karesz 50 hozzászólására (») Nov 26, 2023
Az alábbiakat próbáltam, egy visszacsatoló hálózat tagjaiként ( tehát az osztó mindkét tagja ):
MELF preciziós ellenállások ( 1206 méretű ):
Vishay Beyschlag MMA0204 ± 0.1% ± 15ppm/°C
Vishay Draloric SMM0204 ± 0.1% ± 25ppm/K
Welwyn WRM0204 TCR ± 15ppm/°C

preciziós SMD ellenállás ( 1206 méretű ):
Panasonic ERA8A ± 0.1% ± 10ppm/°K

Ezek között is jelentős hangzásbeli különbséget tapasztaltam.

Valamint ugyanitt furatszereltet bepróbáltam:
Audio note Tantalum 1W
Yageo MF0207 0,6W

Más pozíciókban pl.:
Allen Bradley carbon composite, Takman carbon composite, Takman fémréteg, Vishay VAR, Vishay Beyschlag, R534, stb

Sokféle hifista-diyerek számára gyártott mitikus alkatrész létezik, mindenféle csodás hangi tulajdonsággal....többnyire valamilyen sajátos, ilyen-olyan hangkarakterrel

Ha a - talán konszenzusosan - "legjobb" furatszerelt ellenállást keressük, akkor az egyik - műszaki szempontból is extrém jó - a Vishay VAR lehet:
https://foilresistors.com/docs/63140/var.pdf
A hozzászólás módosítva: Nov 26, 2023
Következő: »»   7 / 198
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem