Neues Projekt Hilfe?
  • Projekte
  • Zeitraum
  • Badge
Neueste Kommentare
khera
khera vor 10 Stunden
It is important to keep the error of the puse oxymeter under 4 %.  Machine learning will be used to caliberate with a referece pulse oxymeter or it is still bettr with the results of invasive techniques where used. Studies have shown thet the wavelength of the LED's changes over a period of time. Easy replacement of the LED's and sensor is planned to keep the life of the pulse oxymeter long. There will be a provison in the software to change the lookup table so it shows the correct reading straight away. 
Pulse oxymeter with IR, Red LED's and photo IR photodiode/phototransistor
Gustavo Murta
Gustavo Murta vor 14 Stunden
Today, I am very happy. I did the convertion of my project from Arduino to ESP32. And it's working !! Impressive qualities of my project :    Can measure voltages from -2.000V to +2.000V with accuracy and stability, True Differential Input, conversion reliability with ±1 in 20,000 count accuracy, auto-zero to less than 10μV, Guaranteed Zero Reading for 0V Input, Indication of Over Voltage,   Use only 5 GPIO pins of ESP32, Low power ( uses 3.3V Regulator of ESP32 - Current consumption only 3 mA aproximately  ! ) Specifications of TLC7135:http://www.ti.com/lit/ds/symlink/tlc7135.pdf Now, I will do many tests to improve the circuit. Hablity of access by WiFI and BLT not implemented yet. My project have many possibilities of use : Power energy Monitor Battery Charger (all types)  Remote measurement with safety (by WIFI or BLuetooth)  Multimeter (with adittional circuits)  First Code (ESP32 - ARDUINO IDE) working with success: // ESP32 - DVM7135 // ESP32 DEVKIT - ARDUINO IDE 1.8.5 - TLC7135 - PCF8574 // Gustavo Murta 19/02/2018 // Use I2C pullup Resistors 3K3 ohms /*BSD 3-Clause Open Source License 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include <Wire.h> # define CLOCK 2 // TCL7135 pin22 CLKIN => GIPO_2 # define STB 4 // TCL7135 pin26 -STB => GPIO_4 # define RHLD 5 // TCL7135 pin25 RUN/-HOLD => GPIO_5 # define SDApin 21 // PCF8574 SDA pin15 => GPIO_21 # define SCLpin 22 // PCF8574 SCL pin14 => GPIO_22 # define PCF8574 0x20 // PCF8574 Address byte Digit5, Digit4, Digit3, Digit2, Digit1 = 0; // Digits of TLC7135 byte pcfData = 0; int DigitCount = 0 ; char Signal ; float Voltage = 0; void setup() { pinMode (STB, INPUT); // Interrupt - ESP32 GPIO_4 pinMode (RHLD, OUTPUT); // RUN DVM - ESP32 GIPO_5 // TLC7135 pin22 CLKIN => GPIO_2 generate CLOCK 480 KHz pinMode(CLOCK, OUTPUT); // GPIO_2 as Output ledcAttachPin(CLOCK, 0); // GPIO_2 attached to PWM Channel 0 ledcSetup(0, 480000, 2); // Channel 0 , freq 480 KHz , 2 bit resolution ledcWrite(0, 2); // Enable frequency with duty cycle 50% digitalWrite(RHLD, LOW); // Reset DVM TLC7135 delay(10); digitalWrite(RHLD, HIGH); // Run DVM TLC7135 Serial.begin(115200); attachInterrupt(digitalPinToInterrupt(STB), TestData, FALLING); // External Interrupt GPIO_4 Wire.begin (SDApin, SCLpin); // sda= GPIO_21 /scl= GPIO_22 } void ReadData () { Wire.begin(); // Start I2C Wire.requestFrom(PCF8574, 1); // Read One Byte from PCF8574 pcfData = Wire.read(); // Byte Read } void PrintData () { Serial.print(" TLC7135 Data = "); Serial.print(Signal); // Signal Plus or Minus Serial.print(" "); Serial.print(Digit5, HEX); Serial.print(","); Serial.print(Digit4, HEX); Serial.print(Digit3, HEX); Serial.print(Digit2, HEX); Serial.print(Digit1, HEX); } void UnderVoltage () { if ( bitRead(pcfData, 7)) // Bit7 PCF8574 => Under Voltage Serial.println(" Under Voltage "); } void OverVoltage () { if ( bitRead(pcfData, 6)) // Bit6 PCF8574 => Over Voltage Serial.println(" Over Voltage "); } void Polarity () { if ( bitRead(pcfData, 5)) // Bit5 PCF8574 => Polarity + or - { Signal = '+' ; } else { Signal = '-' ; } } void PrintVoltage () { Voltage = ((Digit5 * 10000) + (Digit4 * 1000) + (Digit3 * 100) + (Digit2 * 10) + Digit1) / 10000.0 ; Serial.print(" Voltage = "); Serial.print(Signal); Serial.println(Voltage, 3); } void TestData () { ReadData (); Polarity(); if ( bitRead(pcfData, 4)) // Test if TLC7135 Digit 5 is on (bit 4 of PCF8574) { Digit5 = pcfData & 0x0F ; // Read first Byte DigitCount = 0 ; // Reset Digit Count DigitCount = ++DigitCount ; // Digit Count increment } if (! (bitRead(pcfData, 4))) // Test If bit 4 of PCF8574 is Off - Not Digit 5 switch (DigitCount) { case 1 : Digit4 = pcfData & 0x0F ; // Read 2nd Byte - Digit 4 DigitCount = ++DigitCount ; // Digit Count increment break ; case 2 : Digit3 = pcfData & 0x0F ; // Read 3rd Byte - Digit 3 DigitCount = ++DigitCount ; // Digit Count increment break ; case 3 : Digit2 = pcfData & 0x0F ; // Read 4th Byte - Digit 2 DigitCount = ++DigitCount ; // Digit Count increment break ; case 4 : Digit1 = pcfData & 0x0F ; // Read 5th Byte - Digit 1 DigitCount = ++DigitCount ; // Digit Count increment //PrintData (); PrintVoltage (); break ; default : break; } OverVoltage (); //UnderVoltage (); } void loop() { }   Console Arduino IDE - Positive voltage reading (example) Voltage = +0.264 Voltage = +0.264 Voltage = +0.264 Voltage = +0.264 Voltage = +0.264 Voltage = +0.264 Voltage = +0.264 Voltage = +0.264 Voltage = +0.264 Console Arduino IDE - Negative voltage reading (example) Voltage = -1.635 Voltage = -1.635 Voltage = -1.635 Voltage = -1.635 Voltage = -1.635 Voltage = -1.635 Voltage = -1.635 Voltage = -1.635 Voltage = -1.635
ESP32 Digital Voltmeter
Jorge Saer
Jorge Saer vor 21 Stunden
Very interesting. I have worked on a similar project in 2012/2013. If you want me to share some opinions / knowledge with you it will be my pleasure. Keep the nice work going.
ECG on the move
Mras2an
Mras2an vor 22 Stunden
In this new video: meca improvement, pump change and OTA update.  
Connected cocktail machine
TiemeKuyper
TiemeKuyper vor 1 Tag
Yes, that could be an option if you wish, but it uses somewhat more mains power which I thought not to be necessary. There are many ways to do this. See my comment on DanyR's remark, there I give a proposal to use the optical isolation. Note that the schematics needs every 0-crossing, to positive and negative going. Therefor the Exor is added there. It should work, I did not test it. But indeed the H11AA1 with the dual LED is also an option.
Mains Power Driver by MCU DC or PWM