-
Posts
104 -
Joined
-
Last visited
Информация
-
Город
Одесса
Электроника
-
Стаж в электронике
Менее года
Recent Profile Visitors
925 profile views
Саша Мельник's Achievements
-
Саша Мельник started following Отредактировать библиотеку под замену шунта для ina219
-
Подскажите как правильно расширить диапазон по току и напряжению в модуле ina219 ? Шунт заменил на такой: шунт на 3750мкОм библиотеку взял INA219_WE-master менять в скетче данные не получается, значит нужно лезть в библиотеку. Насколько я понял мне нужно свои данные вставить сюда: Но есть у меня сомнения, может еще где-то надо подправить ? И еще, если с током понятно, что решается заменой шунта, а вот с напряжением не очень. У меня 36 вольт, а там расчитано на 26 вольт, вот не могу сообразить , если делитель напряжения делать, то как его подключать к модулю, чтоб не повлияло на показания? Вот файл конфигурации: This is a library for the INA219 Current Sensor Module * * You'll find an example which should enable you to use the library. * * You are free to use it, change it or build on it. In case you like * it, it would be cool if you give it a star. * * If you find bugs, please inform me! * * Written by Wolfgang (Wolle) Ewald * https://wolles-elektronikkiste.de/en/ina219-current-and-power-sensor (English) * https://wolles-elektronikkiste.de/ina219 (German) * *******************************************/ #include "INA219_WE.h" INA219_WE::INA219_WE(int addr){ #ifndef USE_TINY_WIRE_M_ _wire = &Wire; #endif i2cAddress = addr; } INA219_WE::INA219_WE(){ #ifndef USE_TINY_WIRE_M_ _wire = &Wire; #endif i2cAddress = 0x40; } #ifndef USE_TINY_WIRE_M_ INA219_WE::INA219_WE(TwoWire *w, int addr){ _wire = w; i2cAddress = addr; } INA219_WE::INA219_WE(TwoWire *w){ _wire = w; i2cAddress = 0x40; } #endif bool INA219_WE::init(){ if( !reset_INA219() ) { return false; } setADCMode(BIT_MODE_12); setMeasureMode(CONTINUOUS); setPGain(PG_320); setBusRange(BRNG_32); shuntFactor = 1.0; overflow = false; shuntVoltageOffset = 0.0; offsetIsSet = false; return true; } bool INA219_WE::reset_INA219(){ byte ack = writeRegister(INA219_CONF_REG, INA219_RST); return ack == 0; } void INA219_WE::setCorrectionFactor(float corr){ calValCorrected = calVal * corr; writeRegister(INA219_CAL_REG, calValCorrected); } void INA219_WE::setShuntVoltOffset_mV(float offs){ shuntVoltageOffset = offs; offsetIsSet = true; } void INA219_WE::setADCMode(INA219_ADC_MODE mode){ deviceADCMode = mode; uint16_t currentConfReg = readRegister(INA219_CONF_REG); currentConfReg &= ~(0x0780); currentConfReg &= ~(0x0078); uint16_t adcMask = mode<<3; currentConfReg |= adcMask; adcMask = mode<<7; currentConfReg |= adcMask; writeRegister(INA219_CONF_REG, currentConfReg); } void INA219_WE::setMeasureMode(INA219_MEASURE_MODE mode){ deviceMeasureMode = mode; uint16_t currentConfReg = readRegister(INA219_CONF_REG); currentConfReg &= ~(0x0007); currentConfReg |= deviceMeasureMode; writeRegister(INA219_CONF_REG, currentConfReg); } void INA219_WE::setPGain(INA219_PGAIN gain){ devicePGain = gain; uint16_t currentConfReg = readRegister(INA219_CONF_REG); currentConfReg &= ~(0x1800); currentConfReg |= devicePGain; writeRegister(INA219_CONF_REG, currentConfReg); switch(devicePGain){ case PG_40: calVal = 20480; currentDivider_mA = 50.0; pwrMultiplier_mW = 0.4; shuntOverflowLimit = 4000; break; case PG_80: calVal = 10240; currentDivider_mA = 25.0; pwrMultiplier_mW = 0.8; shuntOverflowLimit = 8000; break; case PG_160: calVal = 8192; currentDivider_mA = 20.0; pwrMultiplier_mW = 1.0; shuntOverflowLimit = 16000; break; case PG_320: calVal = 4096; currentDivider_mA = 10.0; pwrMultiplier_mW = 2.0; shuntOverflowLimit = 32000; break; } writeRegister(INA219_CAL_REG, calVal); } void INA219_WE::setBusRange(INA219_BUS_RANGE range){ deviceBusRange = range; uint16_t currentConfReg = readRegister(INA219_CONF_REG); currentConfReg &= ~(0x2000); currentConfReg |= deviceBusRange; writeRegister(INA219_CONF_REG, currentConfReg); } void INA219_WE::setShuntSizeInOhms(float shuntSize){ shuntFactor = shuntSize / 0.1; } float INA219_WE::getShuntVoltage_mV(){ int16_t val; val = (int16_t) readRegister(INA219_SHUNT_REG); if((abs(val))== shuntOverflowLimit){ overflow = true; } else{ overflow = false; } return (val * 0.01); } float INA219_WE::getBusVoltage_V(){ uint16_t val; val = readRegister(INA219_BUS_REG); val = ((val>>3) * 4); return (val * 0.001); } float INA219_WE::getCurrent_mA(){ int16_t val; int16_t offsetCurrent = 0; val = (int16_t)readRegister(INA219_CURRENT_REG); if(offsetIsSet){ offsetCurrent = (int16_t)(shuntVoltageOffset * 100.0 * calVal / 4096.0); } return ((val - offsetCurrent) / (currentDivider_mA * shuntFactor)); } float INA219_WE::getBusPower(){ uint16_t val; float busPwr = 0.0; if(offsetIsSet){ float current = getCurrent_mA(); float busVolt = getBusVoltage_V(); busPwr = current * busVolt; } else{ val = readRegister(INA219_PWR_REG); busPwr = val * pwrMultiplier_mW / shuntFactor; } return busPwr; } bool INA219_WE::getOverflow(){ uint16_t val; val = readRegister(INA219_BUS_REG); if(val & 1){ overflow = true; } return overflow; } void INA219_WE::startSingleMeasurement(){ uint16_t val = readRegister(INA219_BUS_REG); // clears CNVR (Conversion Ready) Flag val = readRegister(INA219_CONF_REG); writeRegister(INA219_CONF_REG, val); uint16_t convReady = 0x0000; while(!convReady){ convReady = ((readRegister(INA219_BUS_REG)) & 0x0002); // checks if sampling is completed } } bool INA219_WE::startSingleMeasurement(unsigned long timeout_us){ uint16_t val = readRegister(INA219_BUS_REG); // clears CNVR (Conversion Ready) Flag val = readRegister(INA219_CONF_REG); writeRegister(INA219_CONF_REG, val); uint16_t convReady = 0x0000; unsigned long convStart = micros(); while(!convReady && (micros() - convStart < timeout_us)){ convReady = ((readRegister(INA219_BUS_REG)) & 0x0002); // checks if sampling is completed } if(convReady) { return true; } else { return false; } } void INA219_WE::powerDown(){ confRegCopy = readRegister(INA219_CONF_REG); setMeasureMode(POWER_DOWN); } void INA219_WE::powerUp(){ writeRegister(INA219_CONF_REG, confRegCopy); delayMicroseconds(40); } #ifndef USE_TINY_WIRE_M_ uint8_t INA219_WE::writeRegister(uint8_t reg, uint16_t val){ _wire->beginTransmission(i2cAddress); uint8_t lVal = val & 255; uint8_t hVal = val >> 8; _wire->write(reg); _wire->write(hVal); _wire->write(lVal); return _wire->endTransmission(); } uint16_t INA219_WE::readRegister(uint8_t reg){ uint8_t MSByte = 0, LSByte = 0; uint16_t regValue = 0; _wire->beginTransmission(i2cAddress); _wire->write(reg); _wire->endTransmission(false); _wire->requestFrom(i2cAddress,2); if(_wire->available()){ MSByte = _wire->read(); LSByte = _wire->read(); } regValue = (MSByte<<8) + LSByte; return regValue; } #else uint8_t INA219_WE::writeRegister(uint8_t reg, uint16_t val){ TinyWireM.beginTransmission(i2cAddress); uint8_t lVal = val & 255; uint8_t hVal = val >> 8; TinyWireM.send(reg); TinyWireM.send(hVal); TinyWireM.send(lVal); return TinyWireM.endTransmission(); } uint16_t INA219_WE::readRegister(uint8_t reg){ uint8_t MSByte = 0, LSByte = 0; uint16_t regValue = 0; TinyWireM.beginTransmission(i2cAddress); TinyWireM.send(reg); TinyWireM.endTransmission(); TinyWireM.requestFrom(i2cAddress,2); MSByte = TinyWireM.receive(); LSByte = TinyWireM.receive(); regValue = (MSByte<<8) + LSByte; return regValue; } #endif а вот сам скетч с заменой шунта: /*************************************************************************** * Example sketch for the INA219_WE library * * This sketch shows how to use the INA219 module with a shunt different than * 0.1 ohms (R100) in continuous mode. * #* Further information can be found on: * https://wolles-elektronikkiste.de/ina219 (German) * https://wolles-elektronikkiste.de/en/ina219-current-and-power-sensor (English) * ***************************************************************************/ #include <Wire.h> #include <INA219_WE.h> #define I2C_ADDRESS 0x40 /* There are several ways to create your INA219 object: * INA219_WE ina219 = INA219_WE() -> uses Wire / I2C Address = 0x40 * INA219_WE ina219 = INA219_WE(ICM20948_ADDR) -> uses Wire / I2C_ADDRESS * INA219_WE ina219 = INA219_WE(&wire2) -> uses the TwoWire object wire2 / I2C_ADDRESS * INA219_WE ina219 = INA219_WE(&wire2, I2C_ADDRESS) -> all together * Successfully tested with two I2C busses on an ESP32 */ INA219_WE ina219 = INA219_WE(I2C_ADDRESS); void setup() { Serial.begin(9600); Wire.begin(); if(!ina219.init()){ Serial.println("INA219 not connected!"); } /* Set ADC Mode for Bus and ShuntVoltage * * Mode * * Res / Samples * * Conversion Time * BIT_MODE_9 9 Bit Resolution 84 µs BIT_MODE_10 10 Bit Resolution 148 µs BIT_MODE_11 11 Bit Resolution 276 µs BIT_MODE_12 12 Bit Resolution 532 µs (DEFAULT) SAMPLE_MODE_2 Mean Value 2 samples 1.06 ms SAMPLE_MODE_4 Mean Value 4 samples 2.13 ms SAMPLE_MODE_8 Mean Value 8 samples 4.26 ms SAMPLE_MODE_16 Mean Value 16 samples 8.51 ms SAMPLE_MODE_32 Mean Value 32 samples 17.02 ms SAMPLE_MODE_64 Mean Value 64 samples 34.05 ms SAMPLE_MODE_128 Mean Value 128 samples 68.10 ms */ //ina219.setADCMode(SAMPLE_MODE_128); // choose mode and uncomment for change of default /* Set measure mode POWER_DOWN - INA219 switched off TRIGGERED - measurement on demand ADC_OFF - Analog/Digital Converter switched off CONTINUOUS - Continuous measurements (DEFAULT) */ // ina219.setMeasureMode(CONTINUOUS); // choose mode and uncomment for change of default /* Set PGain * Gain * * Shunt Voltage Range * * Max Current * PG_40 40 mV 0.4 A * 0.1 / shuntSizeInOhms PG_80 80 mV 0.8 A * 0.1 / shuntSizeInOhms PG_160 160 mV 1.6 A * 0.1 / shuntSizeInOhms PG_320 320 mV 3.2 A * 0.1 / shuntSizeInOhms (DEFAULT) */ //ina219.setPGain(PG_320); // choose gain and uncomment for change of default /* Set Bus Voltage Range BRNG_16 -> 16 V BRNG_32 -> 32 V (DEFAULT) */ // ina219.setBusRange(BRNG_32); // choose range and uncomment for change of default /* If the current values delivered by the INA219 differ by a constant factor from values obtained with calibrated equipment you can define a correction factor. Correction factor = current delivered from calibrated equipment / current delivered by INA219 */ // ina219.setCorrectionFactor(0.98); // insert your correction factor if necessary /* If you experience a shunt voltage offset, that means you detect a shunt voltage which is not zero, although the current should be zero, you can apply a correction. For this, uncomment the following function and apply the offset you have detected. */ // ina219.setShuntVoltOffset_mV(0.5); // insert the shunt voltage (millivolts) you detect at zero current /* Set shunt size If you don't use a module with a shunt of 0.1 ohms (R100) you can change set the shunt size here. */ ina219.setShuntSizeInOhms(0.0333); // Insert your shunt size in ohms Serial.println("INA219 Set Shunt Size"); } void loop() { float shuntVoltage_mV = 0.0; float loadVoltage_V = 0.0; float busVoltage_V = 0.0; float current_mA = 0.0; float power_mW = 0.0; bool ina219_overflow = false; shuntVoltage_mV = ina219.getShuntVoltage_mV(); busVoltage_V = ina219.getBusVoltage_V(); current_mA = ina219.getCurrent_mA(); power_mW = ina219.getBusPower(); loadVoltage_V = busVoltage_V + (shuntVoltage_mV/1000); ina219_overflow = ina219.getOverflow(); Serial.print("Shunt Voltage [mV]: "); Serial.println(shuntVoltage_mV); Serial.print("Bus Voltage [V]: "); Serial.println(busVoltage_V); Serial.print("Load Voltage [V]: "); Serial.println(loadVoltage_V); Serial.print("Current[mA]: "); Serial.println(current_mA); Serial.print("Bus Power [mW]: "); Serial.println(power_mW); if(!ina219_overflow){ Serial.println("Values OK - no overflow"); } else{ Serial.println("Overflow! Choose higher PGAIN"); } Serial.println(); delay(3000); }
-
нашел более интересную библиотеку INA219_WE естественно , что изменить значения только в скетче ничего не даст кроме ошибки, нужно редактировать конфиг This is a library for the INA219 Current Sensor Module * * You'll find an example which should enable you to use the library. * * You are free to use it, change it or build on it. In case you like * it, it would be cool if you give it a star. * * If you find bugs, please inform me! * * Written by Wolfgang (Wolle) Ewald * https://wolles-elektronikkiste.de/en/ina219-current-and-power-sensor (English) * https://wolles-elektronikkiste.de/ina219 (German) * *******************************************/ #include "INA219_WE.h" INA219_WE::INA219_WE(int addr){ #ifndef USE_TINY_WIRE_M_ _wire = &Wire; #endif i2cAddress = addr; } INA219_WE::INA219_WE(){ #ifndef USE_TINY_WIRE_M_ _wire = &Wire; #endif i2cAddress = 0x40; } #ifndef USE_TINY_WIRE_M_ INA219_WE::INA219_WE(TwoWire *w, int addr){ _wire = w; i2cAddress = addr; } INA219_WE::INA219_WE(TwoWire *w){ _wire = w; i2cAddress = 0x40; } #endif bool INA219_WE::init(){ if( !reset_INA219() ) { return false; } setADCMode(BIT_MODE_12); setMeasureMode(CONTINUOUS); setPGain(PG_320); setBusRange(BRNG_32); shuntFactor = 1.0; overflow = false; shuntVoltageOffset = 0.0; offsetIsSet = false; return true; } bool INA219_WE::reset_INA219(){ byte ack = writeRegister(INA219_CONF_REG, INA219_RST); return ack == 0; } void INA219_WE::setCorrectionFactor(float corr){ calValCorrected = calVal * corr; writeRegister(INA219_CAL_REG, calValCorrected); } void INA219_WE::setShuntVoltOffset_mV(float offs){ shuntVoltageOffset = offs; offsetIsSet = true; } void INA219_WE::setADCMode(INA219_ADC_MODE mode){ deviceADCMode = mode; uint16_t currentConfReg = readRegister(INA219_CONF_REG); currentConfReg &= ~(0x0780); currentConfReg &= ~(0x0078); uint16_t adcMask = mode<<3; currentConfReg |= adcMask; adcMask = mode<<7; currentConfReg |= adcMask; writeRegister(INA219_CONF_REG, currentConfReg); } void INA219_WE::setMeasureMode(INA219_MEASURE_MODE mode){ deviceMeasureMode = mode; uint16_t currentConfReg = readRegister(INA219_CONF_REG); currentConfReg &= ~(0x0007); currentConfReg |= deviceMeasureMode; writeRegister(INA219_CONF_REG, currentConfReg); } void INA219_WE::setPGain(INA219_PGAIN gain){ devicePGain = gain; uint16_t currentConfReg = readRegister(INA219_CONF_REG); currentConfReg &= ~(0x1800); currentConfReg |= devicePGain; writeRegister(INA219_CONF_REG, currentConfReg); switch(devicePGain){ case PG_40: calVal = 20480; currentDivider_mA = 50.0; pwrMultiplier_mW = 0.4; shuntOverflowLimit = 4000; break; case PG_80: calVal = 10240; currentDivider_mA = 25.0; pwrMultiplier_mW = 0.8; shuntOverflowLimit = 8000; break; case PG_160: calVal = 8192; currentDivider_mA = 20.0; pwrMultiplier_mW = 1.0; shuntOverflowLimit = 16000; break; case PG_320: calVal = 4096; currentDivider_mA = 10.0; pwrMultiplier_mW = 2.0; shuntOverflowLimit = 32000; break; } writeRegister(INA219_CAL_REG, calVal); } void INA219_WE::setBusRange(INA219_BUS_RANGE range){ deviceBusRange = range; uint16_t currentConfReg = readRegister(INA219_CONF_REG); currentConfReg &= ~(0x2000); currentConfReg |= deviceBusRange; writeRegister(INA219_CONF_REG, currentConfReg); } void INA219_WE::setShuntSizeInOhms(float shuntSize){ shuntFactor = shuntSize / 0.1; } float INA219_WE::getShuntVoltage_mV(){ int16_t val; val = (int16_t) readRegister(INA219_SHUNT_REG); if((abs(val))== shuntOverflowLimit){ overflow = true; } else{ overflow = false; } return (val * 0.01); } float INA219_WE::getBusVoltage_V(){ uint16_t val; val = readRegister(INA219_BUS_REG); val = ((val>>3) * 4); return (val * 0.001); } float INA219_WE::getCurrent_mA(){ int16_t val; int16_t offsetCurrent = 0; val = (int16_t)readRegister(INA219_CURRENT_REG); if(offsetIsSet){ offsetCurrent = (int16_t)(shuntVoltageOffset * 100.0 * calVal / 4096.0); } return ((val - offsetCurrent) / (currentDivider_mA * shuntFactor)); } float INA219_WE::getBusPower(){ uint16_t val; float busPwr = 0.0; if(offsetIsSet){ float current = getCurrent_mA(); float busVolt = getBusVoltage_V(); busPwr = current * busVolt; } else{ val = readRegister(INA219_PWR_REG); busPwr = val * pwrMultiplier_mW / shuntFactor; } return busPwr; } bool INA219_WE::getOverflow(){ uint16_t val; val = readRegister(INA219_BUS_REG); if(val & 1){ overflow = true; } return overflow; } void INA219_WE::startSingleMeasurement(){ uint16_t val = readRegister(INA219_BUS_REG); // clears CNVR (Conversion Ready) Flag val = readRegister(INA219_CONF_REG); writeRegister(INA219_CONF_REG, val); uint16_t convReady = 0x0000; while(!convReady){ convReady = ((readRegister(INA219_BUS_REG)) & 0x0002); // checks if sampling is completed } } bool INA219_WE::startSingleMeasurement(unsigned long timeout_us){ uint16_t val = readRegister(INA219_BUS_REG); // clears CNVR (Conversion Ready) Flag val = readRegister(INA219_CONF_REG); writeRegister(INA219_CONF_REG, val); uint16_t convReady = 0x0000; unsigned long convStart = micros(); while(!convReady && (micros() - convStart < timeout_us)){ convReady = ((readRegister(INA219_BUS_REG)) & 0x0002); // checks if sampling is completed } if(convReady) { return true; } else { return false; } } void INA219_WE::powerDown(){ confRegCopy = readRegister(INA219_CONF_REG); setMeasureMode(POWER_DOWN); } void INA219_WE::powerUp(){ writeRegister(INA219_CONF_REG, confRegCopy); delayMicroseconds(40); } #ifndef USE_TINY_WIRE_M_ uint8_t INA219_WE::writeRegister(uint8_t reg, uint16_t val){ _wire->beginTransmission(i2cAddress); uint8_t lVal = val & 255; uint8_t hVal = val >> 8; _wire->write(reg); _wire->write(hVal); _wire->write(lVal); return _wire->endTransmission(); } uint16_t INA219_WE::readRegister(uint8_t reg){ uint8_t MSByte = 0, LSByte = 0; uint16_t regValue = 0; _wire->beginTransmission(i2cAddress); _wire->write(reg); _wire->endTransmission(false); _wire->requestFrom(i2cAddress,2); if(_wire->available()){ MSByte = _wire->read(); LSByte = _wire->read(); } regValue = (MSByte<<8) + LSByte; return regValue; } #else uint8_t INA219_WE::writeRegister(uint8_t reg, uint16_t val){ TinyWireM.beginTransmission(i2cAddress); uint8_t lVal = val & 255; uint8_t hVal = val >> 8; TinyWireM.send(reg); TinyWireM.send(hVal); TinyWireM.send(lVal); return TinyWireM.endTransmission(); } uint16_t INA219_WE::readRegister(uint8_t reg){ uint8_t MSByte = 0, LSByte = 0; uint16_t regValue = 0; TinyWireM.beginTransmission(i2cAddress); TinyWireM.send(reg); TinyWireM.endTransmission(); TinyWireM.requestFrom(i2cAddress,2); MSByte = TinyWireM.receive(); LSByte = TinyWireM.receive(); regValue = (MSByte<<8) + LSByte; return regValue; } #endif я правильно понимаю, что нужно мои параметры вписать в эту часть кода? и сразу же еще один вопрос, с этим шунтом диапазон тока я увеличиваю, а по напряжению как это сделать правильно?
-
пришлось отказатся от этой платы, поставил обычную NANO и все заработало. а там какая то несовместимость по частоте получалась. Теперь появился вопрос по ina219 : я выпаял родной резистор на 0.1 Ом и подключил шунт на 20А, 75мВ, 3750мкОм
-
небольшая заминка, почему то не хочет библиотека ina219 работать с wavgat Пока не могу найти причину
-
дело в том что я эти провода припаиваю, если уже припаяю, то они уже там и умрут. а на родных разъемах очень хреновый контакт
-
как оказалось сгорела не только ардуинка, но и или плата IIC I2C или сам дисплей, хотя и то и то светится. но I2C адрес не определяется. Ну дисплеев у меня хватает, пару ардуинок тоже есть, а вот модуль I2C есть один еще но не уверен что он нормальный, теперь выбор или цеплять жгут проводов или покупать модуль I2C. Он конечно не дорогой, но 2-3 дня прийдется ждать
-
Наконец то дошли руки до "чудо-проекта". Ну вообщем поставил БП от кассового аппарата для охлаждения и ардуинки ради эксперимента соединял и разъединял минусы, на показания не влияет. подключил dc/dc теперь можно собирать в кучу ардуиновские мелочи. Вот с датчиком тока не совсем определился, есть ina219 и есть acs 712. Вроде ina219 лучше, но немного смущает что она у меня в первый раз сгорела, буду сейчас по 10 раз проверять, перед тем как подключить
-
не работает али все таки с украиной, даже невозможно регион изменить на сайте. Сейчас получились два дня тяжелых на работе, что даже небыло сил чем то заниматся вечером. Сегодня думаю найду время продолжить
-
завтра прийдет новая понижайка, сделаю. заказал такую же только поменьше мощность
-
БП отдельный на кулер и ардуинку но минус мне все равно нужно общий делать
-
подключил вместо 12 вольтовой обмотки китайский БП на 12 вольт как пишется на корпусе. Вольтметр показывает 18.5 вольт ! Такое может быть ? С 7805 выходит 4.99, вентилятор начинает крутить где-то в районе 6 вольт. Подключил к этому минусу минус с 36 вольтовой обмотки, по всем показаниям ничего не изменилось. на 36 вольтовой обмотке показывает 38 вольт. подключил dc/dc , вверх дошло до 33 вольт, но когда начал уменьшать, сначала шло все нормально, а когда дошел до минимума 0.2 вольта светодиод потух и больше не зажигался
-
так и думаю делать, но ради интереса, что нет вариантов чтоб их отделить друг от друга? Например диодом чисто теоретически
-
от катушки 12 вольт. кажется я нашел в чем причина всех сгораний. Подключено к 12 вольтовой обмотке 7805 с которой шло на ардуино и вентилятор через транзистор с терморезистором, а на 24 вольтовой ничего, только мост с конденсатором. Взял минус от 24 вольтовой части схемы, а плюс от 7805, показало 14 вольт !!! Но это еще не самое интересное, минус от 24 вольтовой и минус от 5 вольтового выхода показал 10 вольт
-
на 7805 цифровой сначала показал 4.6 , но в течении минуты примерно поднялось до 4.99. А Цешка показывает 5.6 но дело ж не в этом, тут разница всего в пол вольта, а после диодного моста разница в 6 вольт ну будем считать что точнее цифровой, по нему и буду ориентироватся
-
есть и 7805 и 7812 и 7809 , я об этом тоже думал, но не знаю у них есть какие то погрешности или там ровно такое напряжение как должно быть