Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   849 / 849
(#) proli007 válasza pumpa hozzászólására (») Okt 6, 2024 /
 
Mondjuk Te 120 fokot írtál..
(#) pumpa válasza proli007 hozzászólására (») Okt 6, 2024 /
 
Bocsánat akkor elírtam 1200 fokos a hőlelem!
Erről kérdeztem:

https://vi.aliexpress.com/item/1005007182526067.html?spm=a2g0o.prod...rom%3A
(#) pipi válasza pumpa hozzászólására (») Okt 6, 2024 /
 
Na de hány fokig is akarsz mérni?
(#) proli007 válasza pumpa hozzászólására (») Okt 7, 2024 /
 
Hello!
A Maxim csapatában komoly szakemberek ülnek. A méréshatár nem véletlenül 1024 °C
A K típusú hőelem, olcsósága miatt népszerű eszköz, de ismereteim szerint 1100°C-ig lehet vele mérni. 1300°C-t csak "tranziens módon" viseli el.
Ha valóban 1200°C-ig szeretnél mérni, akkor arra Platina-Platinarhodium hőelem alkalmas. (Ami nem az "olcsójános" kategória.) Lévén, hogy a Platina olvadáspontja 1750°C. Így 1600°C-ig lehet vele mérni.
Ajánlom figyelmedbe..
(#) pumpa válasza proli007 hozzászólására (») Okt 7, 2024 /
 
Üdv! Nagyon köszönöm a felvilágosítást tanulmányozom majd a linkedet. Nekem csak arra kellene, hogy megmérjem a kazán, és elmenő füstgáz hőmérsékletét. Tulajdonképen, csak tájékozódás miatt kellene, nem kell °C pontossággal. Azt hiszem akkor még is csak elég lenne nekem a MAX6675 modul ugye?
(#) proli007 válasza pumpa hozzászólására (») Okt 7, 2024 /
 
Hello! Szerintem ahhoz jó lesz, bár nem tudom milyen kazánról van szó. Egy "komoly kazán" tűztér hőmérséklete kb. 1300°C. De tűztér hőmérsékletet csak akkor érdemes mérni, ha homogén.
A kilépő füstgáz vegyestüzelésű kazánnál emlékeim szerint 165°C-nak kell lenni a kén kicsapódás megakadályozása miatt. Természetesen kondenzációs kazánnál ez 40 fok környékén lehet. Ott a kén a kondenzvízben lesz a kémény meg ventilátor rásegítéses és saválló betétes. Na de ez már nagyon eltér az Arduino témától..
(#) Bakman válasza pumpa hozzászólására (») Okt 7, 2024 /
 
Én MAX6675-ös IC-t és K-típusú hőelemethasználok füsthőmérséklet mérésére, rendben van.
(#) Régi motoros válasza proli007 hozzászólására (») Okt 7, 2024 /
 
Ebben a leírásban arra nem tudtam rájönni, hogy azonos szenzorhoz miért tartoznak több lépcsős hőértékek? Változik a pontosság, linearitás, vagy hiba?
Nekem pl elektromos pizzasütőhöz kellesz majd ilyen 0-500 °C-ig, de az a projekt még kicsit odébb van.
A hozzászólás módosítva: Okt 7, 2024
(#) proli007 válasza Régi motoros hozzászólására (») Okt 7, 2024 / 1
 
Igen, változik a linearitás, pontosság. Ezért bontják tartományokra. Meg ha logikusan nézed, a gyakorlatban szinte nincs olyan eset, ahol a teljes mérési tartományt szükséges a használni.
Én a TC mérést maximum +-2%-os pontossági tartományig hiszem el. De ha utána nézel, akkor láthatod hoz azonos típus között is vannak változatok, anyagminőség/hőkezelés szerint. Tehát ez egyben azt is jelenti, hogy használat közben is változni fog az anyagok fizikai paraméterei.
A hőmérséklet mérés egyébként sem egy egyszerű pálya. Mind kérdés, hol méred, hogyan méred. Nem igazán vannak homogén terek. Az ember általában ideálisnak és állandónak tekintik a mért dolgokat. De közel sem erről van szó. A digitális világ cseppet félrevezette a szemléletet. De a világ ettől még analóg maradt, ahol nincs egyenes, egyforma dolog.
(#) Skori válasza proli007 hozzászólására (») Okt 7, 2024 / 1
 
A világ digitális, csak a felbontás nagyon nagy, általában sokkal nagyobb mint amit vizsgálni tudunk. Pl. az áramerősség is csak adott értékeket vehet fel: az adott idő alatt áthaladó elektronok számából következik, nincs 0,5 elektron... Az elektromos töltés szintúgy (mennyi elektront halmozunk fel). Az anyagok fizikai méretei: 1 részecskényinél kisebb részre nem tudjuk szeleteni, tehát a felbontás véges. Fénymennyiség: fotonok számából következik (nincs 0,5 foton). Még a DNS-ünk is (véges nagyságú) digitális infót tartalmaz. stb...stb...
A hozzászólás módosítva: Okt 7, 2024
(#) pumpa válasza Bakman hozzászólására (») Okt 7, 2024 /
 
Le tudnád írni a K-típusú hőelemed pontos típusát?
(#) Bakman válasza pumpa hozzászólására (») Okt 7, 2024 /
 
Egy határozott talánnal tudok felelni.
Ha jól emlékszem, a HEStore-ban vettem. Ilyen (M6-os menettel): Bővebben: Link. Szobahőmérsékleten talán 1.5 °C-ot tévedett és úgy ítéltem meg, ez a pontosság bőven elég nekem arra, amire használni szeretném.
(#) pumpa válasza Bakman hozzászólására (») Okt 7, 2024 /
 
Köszönöm!
(#) kameleon2 hozzászólása Okt 9, 2024 /
 

Arduino 3217 3224 UPDI bootloader, Arduino IDE 1.8.5

Sziasztok! 3217, 3224 mikrokontrollert kellene programozni. Mindent megcsináltam a leírások alapján, mégsem sikerül UPDI alól látni. Már az is fura, hogy Gyári Atmel cucchoz úgy kell keresgélni minden töredék infót. Van valakinek tapasztalata, hogyan tehető fel tényleg egyszerűen egy bootloader és hogyan lehetne Arduino IDE alól programozni? A panel amin van egy ATtiny3217 Curiosity Nano. A TME-től.. 1.8.5 IDE, alaplap telepítve, minden amit csak a leírásból el tudtam érni. Megcsináltam a házi UPDI programozót is, ami külön kommunikál. Az is fura, hogy úgy kellett kihámoznom egy rakat leírásból melyik lehet az UPDI láb, mert a panelen nincs rajta a felirat.
(#) MATA hozzászólása Okt 11, 2024 /
 

Arduino program

Üdv mesterek!
A követekző gondom lenne van itt ez a mellékelt kód ez egy arduino V/A mérő műszeré az a gondom vele már próbáltam mini Pon is meg nanon is hogy mikor feláll a program elkezd vibrálni a kijelző vadul mikor elindítom kb 1-2 ásodpercig jól mutatja a kijelzést majd elkezd villogni az L jelzésű led a nanón és a kijelző is vibrálni kezd és ez nagyon zavaró. Mitől lehet ez a jelenség.
A tápot megkapja rendesen.
Köszönöm!
  1. /*-----Samodelkin YouTube Channel----------
  2. -----------V.A.W_meter V-1.0---------------
  3. */
  4. //------ Здесь приведены все цвета которые можно менять в тексте .
  5. //#define ST7735_BLACK       0x0000      /*   0,   0,   0 */
  6. //#define ST7735_NAVY        0x000F      /*   0,   0, 128 */
  7. //#define ST7735_DARKGREEN   0x03E0      /*   0, 128,   0 */
  8. //#define ST7735_DARKCYAN    0x03EF      /*   0, 128, 128 */
  9. //#define ST7735_MAROON      0x7800      /* 128,   0,   0 */
  10. //#define ST7735_PURPLE      0x780F      /* 128,   0, 128 */
  11. //#define ST7735_OLIVE       0x7BE0      /* 128, 128,   0 */
  12. //#define ST7735_LIGHTGREY   0xC618      /* 192, 192, 192 */
  13. //#define ST7735_LIGHTGREY     0x7BEF      /* 128, 128, 128 */
  14. //#define ST7735_BLUE        0x001F      /*   0,   0, 255 */
  15. //#define ST7735_GREEN       0x07E0      /*   0, 255,   0 */
  16. //#define ST7735_CYAN        0x07FF      /*   0, 255, 255 */
  17. //#define ST7735_RED         0xF800      /* 255,   0,   0 */
  18. //#define ST7735_MAGENTA     0xF81F      /* 255,   0, 255 */
  19. //#define ST7735_YELLOW      0xFFE0      /* 255, 255,   0 */
  20. //#define ST7735_WHITE       0xFFFF      /* 255, 255, 255 */
  21. //#define ST7735_ORANGE      0xFD20      /* 255, 165,   0 */
  22. //#define ST7735_GREENYELLOW 0xAFE5      /* 173, 255,  47 */
  23. //#define ST7735_PINK        0xF81F
  24. //------
  25. //------Добавляем все необходимые библиотеки
  26. #include <SPI.h>
  27. #include <TFT_ST7735.h>
  28. #include <Wire.h>
  29. #include <OneWire.h>
  30. #include <Adafruit_ADS1015.h>
  31. //------
  32.  
  33.  Adafruit_ADS1115 ads;              //  Выбираем необходимый модуль АЦП, можно выбрать между asd1115  или  ads1015.
  34.  OneWire  ds(8);                      //  Указываем номер ножки, куда подключено датчик температуры 18b20.
  35.  
  36.  TFT_ST7735 tft = TFT_ST7735();
  37. //#define TFT_CS 10 // Chip select control pin
  38. //#define TFT_DC  7  // Data Command control pin
  39. //#define TFT_RST 9
  40.   //Adafruit_ST7735_AS tft = Adafruit_ST7735_AS(cs, dc, rst);
  41.  //------Место для настроек.
  42.   float  V_max = 35 ;   // При изменении этого значения нужно сделать расчет  делителя напряжения и учесть коэффициент усиления АЦП.  K = Vin / Vацп. K-коэффициент делителя напряжения ,Vin-максимально измеряемое напряжение, Vацп-напряжение усиления АЦП   K=35/1.024 K=34,17.            
  43.   float  A_max = 5.12; // Этот параметр настраивается программно. I=U/R    U= 1.024 усиления АЦП  , R=0.2 сопротивление шунта.    I=1.024 / 0.2 ,  I= 5.12 A.
  44.   float  Temp_min = 30 ; // Минимальная температура при которой начнет работать ШИМ вентилятора.
  45.   float  Temp_max = 60 ; // Температура при которой скорость вентилятора будет максимальной.
  46.  //------
  47.  //-------Здесь хранятся все переменные
  48.  float  ASP = 32768 ;// // Переміна розрядності  
  49.  float  temperature = 0 ;
  50.  float  V , A , W , mAh , Wh ;
  51.  float  fil_A ,fil_V ;
  52.  float  adc_V , adc_A;
  53.  int    V_graf , A_graf , PWM_out ;
  54.  int   PWM = 0 ;
  55.  unsigned long  new_Millis ;
  56.    // переменные фильтра для калмана.
  57.     float varVolt = 40;  // среднее отклонение (ищем в excel)
  58.     float varProcess = 15; // скорость реакции на изменение (подбирается вручную)
  59.     float Pc = 0.0;
  60.     float G = 0.0;
  61.     float P = 1.0;
  62.     float Xp = 0.0;
  63.     float Zp = 0.0;
  64.     float Xe = 0.0;
  65.    // переменные фильтра  для калмана.
  66.  //------
  67.  
  68.  
  69. void setup()
  70. {
  71.   TCCR2B = TCCR2B & 0b11111000 | 0x06;     //Включаем частоту ШИМ'а  вентилятора на ногах 3 и 11: 31250 Гц. Это позволит избавиться от неприятного писка в работе вентилятора.
  72.   Serial.begin(9600);
  73.  //----- Здесь можно выбрать коэффициент усиления АЦП
  74.   //                                                              ADS1015  ADS1115
  75.   //                                                              -------  -------
  76.     // ads.setGain(GAIN_TWOTHIRDS);  // 2/3x gain +/- 6.144V  1 bit = 3mV      0.1875mV (default)
  77.  
  78.  //ads.setGain(GAIN_ONE);         // 1x gain   +/- 4.096V  1 bit = 2mV      0.125mV
  79.    //ads.setGain(GAIN_TWO);         // 2x gain   +/- 2.048V  1 bit = 1mV      0.0625mV
  80.  ads.setGain(GAIN_FOUR);        // 4x gain   +/- 1.024V  1 bit = 0.5mV    0.03125mV
  81.   // ads.setGain(GAIN_EIGHT);      // 8x gain   +/- 0.512V  1 bit = 0.25mV   0.015625mV
  82.   // ads.setGain(GAIN_SIXTEEN);    // 16x gain  +/- 0.256V  1 bit = 0.125mV  0.0078125mV
  83.  //-----
  84.    //uint16_t config = ADS1015_REG_CONFIG_DR_128SPS; // настройка скорости АЦП.  
  85.    ads.begin();                // Инициализация модуля АЦП.
  86.    tft.init();                 // Инициализация дисплея.
  87.    tft.setRotation(1);         // Переворачиваем дисплей.
  88.    tft.fillScreen(TFT_BLACK);  // Указываем цвет заливки дисплея
  89. //-----В этом месте все статические данные, которые будут отображаться на дисплее.
  90.     //----- Рисуем рамку.
  91.   tft.fillRect(-1, -2,160, 128, ST7735_LIGHTGREY);
  92.   tft.fillRect(2, 1, 154, 122, ST7735_BLACK);
  93.   tft.fillRect(-1, 109, 160, 3, ST7735_LIGHTGREY);
  94.      //----- Отображение символов величин.
  95.      tft.setTextColor(ST7735_RED,ST7735_BLACK);       // ( цвет текста , цвет заливки текста )
  96.      tft.drawRightString("Amp", 145, 8, 2);           // ( "Текст" , положение по оси Х , положение по оси Y , размер шрифта)  
  97.      tft.setTextColor(ST7735_YELLOW,ST7735_BLACK  );
  98.      tft.drawRightString("Watt", 147, 85, 2);
  99.      tft.setTextColor(ST7735_WHITE,ST7735_BLACK);
  100.      tft.drawRightString("mAh",37, 18, 1);
  101.      tft.drawRightString("Temp ",35, 114, 1);
  102.      tft.drawRightString("PWM",123, 114, 1);
  103.      tft.setTextColor(ST7735_ORANGE,ST7735_BLACK);
  104.      tft.drawRightString("%",155, 114, 1);
  105.      
  106.  
  107. //-----
  108.    
  109.   new_Millis = millis();  
  110.  
  111.   delay (1000);
  112. }
  113. void loop()
  114. {
  115.  
  116.   adc_V = ads.readADC_Differential_2_3();   // Включаем дифференциальный режим АЦП на входах 2,3.
  117.   adc_A = ads.readADC_Differential_0_1();   // Включаем дифференциальный режим АЦП на входах 0,1.
  118.  
  119.   // fil_V = filter(adc_V);
  120.    fil_V = adc_V;
  121.    fil_A = adc_A;
  122.  
  123.   //----- Определяем температуру на датчике.
  124.    byte data[2]; // Место для значения температуры
  125.   ds.reset(); // Начинаем взаимодействие со сброса всех предыдущих команд и параметров
  126.   ds.write(0xCC); // Даем датчику DS18b20 команду пропустить поиск по адресу. В нашем случае только одно устрйоство
  127.   ds.write(0x44); // Даем датчику DS18b20 команду измерить температуру. Само значение температуры мы еще не получаем - датчик его положит во внутреннюю память
  128.   ds.reset(); // Теперь готовимся получить значение измеренной температуры
  129.   ds.write(0xCC);
  130.   ds.write(0xBE); // Просим передать нам значение регистров со значением температуры
  131.     data[0] = ds.read(); // Читаем младший байт значения температуры
  132.     data[1] = ds.read(); // А теперь старший
  133.    temperature =  ((data[1] << 8) | data[0]) * 0.0625;
  134.   //-----
  135.  
  136.   //----- Определяем скорость вентилятора в зависимости от температуры.
  137.    if (temperature >= Temp_min && temperature <= Temp_max )  {PWM = ( temperature - Temp_min )*255/( Temp_max - Temp_min );}
  138.       else if (temperature < Temp_min)  { PWM=0;}
  139.       else if (temperature >= Temp_max)  { PWM=255;}
  140.    //-----  
  141.    
  142.  //----- Расчет и отображение всех динамических данных.
  143.    V = fil_V * V_max / ASP;
  144.    A = fil_A * A_max / ASP;
  145.   if ( A<0) {A=0;}
  146.   if (V<0) {V=0;}
  147.  
  148.  W = A * V;
  149.    char mAh_out[8];
  150.      
  151.    mAh += A * (millis() - new_Millis)/3600000*1000; //расчет емкости  в мАч
  152.    new_Millis = millis();
  153.      if (mAh<100) {
  154.          dtostrf( mAh , 4, 2, mAh_out);
  155.          tft.setTextColor(ST7735_WHITE,ST7735_BLACK);
  156.          tft.drawRightString(mAh_out,41 ,9, 1);
  157.        }
  158.       else if (mAh>=100 && mAh<1000 )   {
  159.           dtostrf( mAh , 5, 1, mAh_out);
  160.           tft.setTextColor(ST7735_WHITE,ST7735_BLACK);
  161.           tft.drawRightString(mAh_out,41, 9, 1);
  162.        }        
  163.        else  if  (mAh>=1000 && mAh<10000){
  164.            itoa (mAh,mAh_out,10);
  165.            dtostrf( mAh , 5, 0, mAh_out);
  166.            tft.setTextColor(ST7735_WHITE,ST7735_BLACK);
  167.            tft.drawRightString(mAh_out,40, 9, 1);
  168.        }
  169.        else  if  (mAh>=10000 ){
  170.            dtostrf( mAh , 6, 0, mAh_out);
  171.            tft.setTextColor(ST7735_WHITE,ST7735_BLACK);
  172.            tft.drawRightString(mAh_out,45, 9, 1);
  173.        }        
  174.   char V_out[7]; dtostrf( V , 5, 2, V_out);
  175.   char A_out[8]; dtostrf( A , 7, 2, A_out);
  176.   char W_out[8]; dtostrf( W ,7, 2, W_out);
  177.   char Temperature[4]; dtostrf(temperature, 4, 1, Temperature);
  178.   char PWM_out[4]; dtostrf(PWM/2.25, 3, 0, PWM_out);
  179.  
  180.     tft.setTextColor( ST7735_WHITE,ST7735_BLACK);
  181.     tft.drawRightString(V_out,140, 35, 6);
  182.         if (V < 10)  {
  183.           tft.drawRightString("  ",35, 35, 6);
  184.           }
  185.          
  186.     tft.setTextColor(ST7735_RED,ST7735_BLACK );
  187.     tft.drawRightString(A_out, 110, 7, 4);
  188.     tft.setTextColor(ST7735_YELLOW,ST7735_BLACK );
  189.     tft.drawRightString(W_out,110, 83, 4);
  190.         if (W < 100)  {
  191.           tft.drawRightString("  ",46, 83, 4);
  192.           }
  193.                          
  194.     tft.setTextColor(ST7735_ORANGE,ST7735_BLACK);
  195.     tft.drawRightString(Temperature, 60 , 114, 1);
  196.     tft.setTextColor(ST7735_ORANGE,ST7735_BLACK);
  197.     tft.drawRightString(PWM_out ,148, 114, 1);
  198.    
  199.        
  200.  analogWrite(3, PWM);
  201.  //-----      
  202.    //----- Отображение шкал заполнения.      
  203.           V_graf = V / V_max * 100 ;
  204.   if (V_graf < 0) {V_graf = -V_graf;}
  205.   tft.fillRect(5, 5, 4, 100- V_graf, ST7735_BLACK);
  206.   tft.fillRect(5, 105 - V_graf, 4, V_graf+1, ST7735_BLUE);
  207.  
  208.   A_graf = A / A_max * 100 ;
  209.   if (A_graf < 0) {A_graf = -A_graf;}
  210.   tft.fillRect(150, 6, 4, 100- A_graf, ST7735_BLACK);
  211.   tft.fillRect(150, 106 - A_graf, 4, A_graf+1, ST7735_RED);
  212.   //-----
  213.      
  214.       Serial.print  ("  A " );
  215.       Serial.print  ( A_out );
  216.       Serial.print  ("    " );
  217.       Serial.print  (  adc_A );
  218.       Serial.print  ("  V " );
  219.       Serial.print(  V );
  220.       Serial.print  ("    " );
  221.       Serial.println (  adc_V );
  222.  
  223.  
  224.        delay (10);
  225. }
  226.     float filter(float val) {  //функция фильтрации
  227.   Pc = P + varProcess;
  228.   G = Pc/(Pc + varVolt);
  229.   P = (1-G)*Pc;
  230.   Xp = Xe;
  231.   Zp = Xp;
  232.   Xe = G*(val-Zp)+Xp; // "фильтрованное" значение
  233.   return(Xe);
  234.    }
(#) Logeen hozzászólása Okt 12, 2024 /
 

mikrokontroller backup táplálása

Sziasztok!

Egy RP2040 backup táplálását szeretném megoldani, a lehető leg kevesebb módosítással, plusz munkával. Csak 1db USBC-t szeretnék az előlapra, a mikrokontrollerét.
Emiatt valahogy meg kellene oldani a TP4056-os töltő bekötését, ill. a "visszatáplálást".
Csatoltam a megoldás 1.0-át.
Van valami hátránya ennek az üzemnek? Az, hogy két fesz. szabályozó dolgozik párhuzamosan bedugott usb-vel az nem hiszem hogy okoz gondot. Lenne jöbb ötlet? Köszi.
(#) wbt válasza Logeen hozzászólására (») Okt 12, 2024 /
 
LDO-nál nézd meg (próbáld ki, ha van kézben), hogy mennyire szereti, ha bemeneti feszültség nélkül kap a kimenetére feszt. Van, ami röppen, van olyan, amelyik kibírja. A uC modulon, gondolom (?) megoldották ezt valahogy...(nincs USB táp, te meg táplálod kívülről 3.3V-al). Nekem nagyon lemerült aksinál szállt el TB4056 túlmelegedés miatt (de lehet, csak én voltam béna). Vicces dolog akkumulátoros rendszerben méregetni, mindig van fesz valahol.
(#) Logeen válasza wbt hozzászólására (») Okt 12, 2024 /
 
Annyit tudtam mérni, hogy az usbc-re akksis üzemben kiül a 3.3V, gondolom az uC 3,3V-os szabályozójában van egy dióda ami nem hagyja hogy alacsonyabban legyen a bemenet mint a kimenet. Ez mindegy is, mert nincs abban az irányban terhelve. Nem melegszik semmmi, talán jó lesz.
(#) wbt válasza Logeen hozzászólására (») Okt 12, 2024 /
 
Akkor jó lesz. Méréseknél vigyázni azért!
(#) Logeen válasza wbt hozzászólására (») Okt 12, 2024 /
 
Igen, kösz.
Még egy shottky belefér. Így legalább ismert úton folyik az áram ha valamiért mégis terhelődik visszafelé az USBC. Mégse body diódákon keresztül...
(#) pipi válasza Logeen hozzászólására (») Okt 12, 2024 /
 
Hali! Ilyen előlről hátulról táplálós módit biztos nem csinálnék, egy csomó bizonytalansági faktor lesz benne, az alkatrészek nem ideálisak...
Az hogy az akksiról visszamegy az 5V bemenetre is pl lehet lesz ott felesleges áramfogyasztás... A Tp panel 3V bemenőről mit csinál ??? nyilván nem tölt, de biztos fogyaszt feleslegesen onnan is még ha pici áramot is... Ne adj isten, esetleg beoszcillál az egész...
Szerintem a tiszta út - USB->TP->akku-> és egy ilyesmi konverter: https://vi.aliexpress.com/w/wholesale-s09-module.html ezt a modult használtam, és relatív pici az "önfogyasztása" szóval akkus üzemhez is jó. és ki tudja használni a li-ion akksi 3-4.2V tartományát, mivel lefelé+felfelé is megcsinálja a 3V3 tápot.
Annak is nézz utána az RP panel 3v3 lábára mit mondanak power in is, vagy csak power out !!!
Ha analóg 5V->3V3 LDO van az RP panelen lehet érdemes kihajítani és akkor a tápot az RP 3V3 lábra kötni. Egyébként meg az %v-lábra illik az 5V körüli tápot...
A hozzászólás módosítva: Okt 12, 2024
(#) Logeen válasza pipi hozzászólására (») Vas, 9:08 /
 
Szia! Köszönöm a válasz! A TP panel nem csinál semmit csökkenő feszre, labortáppal végig játszottam, nem mutat általam mérhető fogyasztást. A beoszcillálást nem teljesen értem, de mindenhol vannak legalább 10uF+100nF kondik a panelokon. Szerintem nem könnyű lengésbe hozni. A RP2040 panelen a 3,3V az kimenet, de kínai barátaink ME6217 LDO-ja van rajta. Ennél 0,3V lehet maximum a fordított fesz különbség, emiatt került be a shottky, az elvezeti az áramot ha kell. Így szerintem már alkalmas bemenetre is.
Egyébként ha a TP4056-os az első eszköz, hogy kerülnek az adatvonalak az RP2040-be?
A fiókomban van hasonló charge pump ami megcsinálná az up-down konverziót:
https://www.amazon.com/Boost-Noise-Regulated-Charge-Converter/dp/B0BQDWD677
Ezek saját fogyasztása 1ma legalább. Valamint legrosszabb esetben is, mikor 4,2V az akku 0,9V-ot kell elfűteni. Ez ~80%-os hatékonyság, nem hiszem hogy sokat nyersz a kapcsoló üzemű konverterrel. A tervem, hogy csak egy mozgásérzékelő fogyaszt majd(~50uA) ami ébreszti a kontrollert... Amit beépítek lineáris LDO-ra azt írják 25uA-t fogyaszt(RT9013).
Nekem se tetszik teljesen ez a megoldás, ezért kédeztem vannak-e más könnyen kivitelezhető, jobb ötletek.
(#) kameleon2 válasza MATA hozzászólására (») Hé, 20:06 / 1
 
Szia! Hardverrel minden rendben? Mert egyes kijelzők gyári csatlakozásaival már gyűlt meg a bajom. Rossz forrasztások - akár a chipeken is, rossz minőségű panel stb. Volt, hogy 5db-ból 2 volt jó. Megkérdeztem a kódról a Chatgpt-t is:

1. Képernyőfrissítés optimalizálása:

Az olyan funkciók, mint a tft.fillRect() és a tft.drawRightString(), amelyek a kijelző frissítéséért felelősek, gyakran vannak hívva a loop() ciklusban. Ez okozhat villogást, mert minden egyes iterációban újrarajzolod a teljes képernyőt. Próbáld csak akkor frissíteni a képernyőt, ha az értékek valóban megváltoznak.
2. Képernyő tisztítása:

A teljes képernyőt minden egyes ciklusban újratöltöd, például a tft.fillScreen(TFT_BLACK) parancs segítségével. Ha csak a megváltozott részeket frissíted, az javíthat a kijelző villogásán.

Javasolt optimalizáció a kijelző frissítésére:

Az alábbi módosításokkal próbáld meg csak azokat a részeket frissíteni, ahol szükséges:

Teljes képernyő frissítése helyett: Csak a kijelző azon részeit frissítsd, ahol valódi változás történik (például az aktuális mAh, feszültség, áramerősség stb.).

Például a teljes kitöltés helyett:
  1. // tft.fillRect(-1, -2,160, 128, ST7735_LIGHTGREY);  // Ezt kerüld a folyamatos frissítések miatt

Próbáld meg külön frissíteni a szükséges elemeket, amikor azok változnak, és ne töröld az egész képernyőt minden ciklusban.
3. Képernyő frissítési késleltetése:

Az aktuális késleltetésed (delay(10)) talán túl kicsi. Próbálkozz egy nagyobb késleltetéssel, hogy a kijelző frissítése lassabb legyen, például:
  1. delay(100);  // Lassabb frissítés, kevesebb villogás

4. Folyamatosan futó analóg írás:

Az analogWrite(3, PWM) folyamatos hívása minden ciklusban felesleges lehet, ha a PWM érték nem változik. Ellenőrizd, hogy csak akkor írsz PWM-et, ha az érték változott.

Próbáld ki ezeket a módosításokat, és nézd meg, hogy javul-e a kijelző stabilitása. Ha továbbra is fennáll a probléma, nézzük meg együtt részletesebben a hardvered beállításait is.
(#) MATA válasza kameleon2 hozzászólására (») Hé, 20:40 / 1
 
Hello!
Köszönöm megnézem ezeket a javaslatokat.
(#) WWalter hozzászólása Kedd, 14:56 /
 

Átviteli karakterisztika mérése

Sziasztok!

Egy projektet gondolkozom : audio áramkör(ök) átviteli karakterisztika mérése.
Amire gondoltam : egy frekvencia generátorral (automatikusa hangolású, esetünkben 20Hz-20KHz; 0dB vagy egyéb konstans beállított értéken) mindkét csatornára (bal-jobb) beadok jelet és a kimeneten a jelszintet és a frekvenciát megadott (beállítható) időpillanatokban megmérem. A kapott értéket fileba kiírva egy excellbe átrakva megkapon az átviteli karakterisztikát (Y jelszint, X frekvencia).
A megvalósítás :
- a jelszint mérését ADS1115-el oldanám meg.
- az audio jelet egy 74LS14 ICn átvezetve közvetlen az arduinoba küldeném.
Ez az elmélet. Szerintetek?
A hozzászólás módosítva: Kedd, 15:10
Moderátor által szerkesztve
Következő: »»   849 / 849
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