{"id":19705133,"url":"https://github.com/kutukvpavel/labpid","last_synced_at":"2025-09-13T10:50:58.835Z","repository":{"id":154968739,"uuid":"261586737","full_name":"kutukvpavel/LabPID","owner":"kutukvpavel","description":"PID temperature controller for laboratory use","archived":false,"fork":false,"pushed_at":"2025-05-23T15:20:47.000Z","size":3915,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-16T18:35:32.491Z","etag":null,"topics":["ds18b20","max6675","pid","pid-controller","temperature-control","visualmicro"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kutukvpavel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-05-05T21:27:05.000Z","updated_at":"2025-05-23T15:20:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"f8eb562a-f644-43d5-9d1c-0f1211f45328","html_url":"https://github.com/kutukvpavel/LabPID","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/kutukvpavel/LabPID","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kutukvpavel%2FLabPID","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kutukvpavel%2FLabPID/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kutukvpavel%2FLabPID/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kutukvpavel%2FLabPID/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kutukvpavel","download_url":"https://codeload.github.com/kutukvpavel/LabPID/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kutukvpavel%2FLabPID/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274952773,"owners_count":25380249,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-13T02:00:10.085Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ds18b20","max6675","pid","pid-controller","temperature-control","visualmicro"],"created_at":"2024-11-11T21:26:15.297Z","updated_at":"2025-09-13T10:50:58.804Z","avatar_url":"https://github.com/kutukvpavel.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LabPID\nPID temperature controller with GPIO\n\n# Basic Hardware:\n - Arduino Nano (or any atmega-328 device with a compatible pinout, or even a bare atmega328 flashed with optiboot)\n - MAX6675 SPI integrated K-type thermocouple amplifier + ADC + cold junction compensation\n - Up to 8 DS18B20 sensors (though only 2 can be recorded simultaneously)\n - Analog input (linear 0-5V with programmable Volt/Kelvin coefficient) uses internal atmega ADC (10-bit) and an external TL431 precision reference shunt regulator\n - 16x2 ALCD and a single encoder (with an integrated button) for offline operation\n - Two PWM outputs for a heater (1 second period) and an optional cooler (faster PWM, suitable for BLDC computer fans, for example)\n - PCA9555-based GPIOs: 4 inputs, 12 outputs by default (second PCA9555 can be added and GPIO map can be altered, see firmware code)\n - 12V and 5V_OneWire power rails have fuse monitoring\n\n# PCB:\n\nThe \\*.lay PCB file contains an old prototyping PCB with mains power supply. Only stuff under /new/ is maintained. This folder contains Proteus v8 design (schematic + PCB) as well as latest Gerber files (supported by JLCPCB). In addition to peripherals mentioned above, this design incorporates following stuff: \n - Power supply from a PC or an external +12V \u0026 +5V power supply (through a Molex 4-pin connector, BEWARE: +5 AND +12 LINES ARE MIXED UP, ALTER THE PLUG's PINOUT ACCORDINGLY!)\n - 4 universal inputs with optoisolators that can be configured by jumpers to accept mains 220Vac or 5-24Vdc\n - 2 optorelays in SIP package for PWM outputs\n - 2 NRP-12 relays GPIO outputs\n - Up to 3 NRP-12 or SIP optorelays (universal layout) for 3 more outputs\n - ULN2003A open-collector outputs for the rest of them\n - Basic buffer/amplifier circuitry for analog input\n - 12V input, 5V input and 5V_OneWire output are protected by fuses, 12V and 5V_OneWire have fuse indicator LEDs and are monitored by the firmware\n - On-board DS18B20 for ambient temperature measurement\n - A big clunky DP-DT toggle switch mounting hole\n - Thermocouple low-pass filter\n - PCB is separated into to parts (they are connected by some tiny traces so that PCB manufactirers don't categorize them as different designs): main board and LCB board, they are then connected with some right-angle interconnects (2 rows are used for mechanical durability as well as ensuring good electrical contact)\n\n# Software:\n - .NET 4.0 (XP SP3 compatible)\n - Uses standard arduino-like virtual COM port (commands are intended to be human-readable to enable simple operation through UART in case the software is unavailable)\n - Adjust all settings (PID coefficients, calibration values etc)\n - Real-time temperature plots (multiple channels, currently 3: selected input \\[thermocouple, linear input, or \"second ds18b20\"\\], \"ambient\" temperature (\"first ds18b20\") \\[fixed\\], \"second ds18b20\" \\[fixed\\])\n - Execute predefined temperature profiles and control GPIOs\n - Named pipe broadcast of events during profile execution for some interoperability\n \n# Building:\n - Firmware-VSCode workspace can be opened with VSCode with Arduino extension installed. DO NOT change existing folder structure of the workspace (/src/ is the only subdirectory name included in compilation by arduino-builder, all other subfolders will be ignored!). The project compiles under Arduino 1.8.5 (and, probably, later). Almost all non-standard libraries required have been modified, so don't try to update them without merging the modifications, all non-standard libraries are included under /src/.\n - You'll almost certainly have to reconfigure C/C++ intellisense include paths based on your arduino installation. It's a known limitation of Arduino for VSCode.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkutukvpavel%2Flabpid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkutukvpavel%2Flabpid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkutukvpavel%2Flabpid/lists"}