{"id":16358152,"url":"https://github.com/hzeller/gaggia-pid","last_synced_at":"2026-07-17T03:04:16.228Z","repository":{"id":148688766,"uuid":"477251717","full_name":"hzeller/gaggia-pid","owner":"hzeller","description":"PID controller, useful for e.g. coffee machines.","archived":false,"fork":false,"pushed_at":"2026-02-28T08:17:50.000Z","size":7853,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-28T13:56:49.582Z","etag":null,"topics":["coffee","coffee-machine","pid","pid-control"],"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/hzeller.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}},"created_at":"2022-04-03T05:55:52.000Z","updated_at":"2026-02-28T08:17:54.000Z","dependencies_parsed_at":"2024-11-07T20:47:39.004Z","dependency_job_id":null,"html_url":"https://github.com/hzeller/gaggia-pid","commit_stats":{"total_commits":23,"total_committers":1,"mean_commits":23.0,"dds":0.0,"last_synced_commit":"b6b0621c6374ba3b9d386b4b60c0d6c4b950cc42"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hzeller/gaggia-pid","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hzeller%2Fgaggia-pid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hzeller%2Fgaggia-pid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hzeller%2Fgaggia-pid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hzeller%2Fgaggia-pid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hzeller","download_url":"https://codeload.github.com/hzeller/gaggia-pid/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hzeller%2Fgaggia-pid/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35565066,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-17T02:00:06.162Z","response_time":116,"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":["coffee","coffee-machine","pid","pid-control"],"created_at":"2024-10-11T02:04:56.123Z","updated_at":"2026-07-17T03:04:16.206Z","avatar_url":"https://github.com/hzeller.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"PID controller for Gaggia Classic\n=================================\n\n# Temperature Sensor\nUsing the [Max31725] for nice high accuracy and fast temperature updates. Also\na bit overengineered, but that is what I had lying around.\n\nThe sensor is on a little PCB (which you find in the\n[sensor-mount/](./sensor-mount) directory. Glued into the existing brass\nscrew-cups the original bimetallic sensor was in (using JB Weld, which is\na sufficiently high-temperature epoxy), then wired up with silicone wiring and\nsealed with silicone.\n\nMount on the side of the boiler where the original brew temp sensor was.\n\nPCB            | Preparing mount | Glued in cup | Sealed\n---------------|-----------------|--------------|--------\n![](./img/sensor-pcb.jpg) | ![](./img/pre-mount.jpg) | ![](./img/sensor-in-metal.jpg) | ![](./img/sensor-in-silicone.jpg)\n\n# PID Controller\n\nRuns on a conventional Arduino Nano.\n\nTo program, get avr-gcc and avrdude. The Makefile takes care of compiling\nand flashing:\n\n```\ncd firmware\nmake flash\n```\n\nThe sytem is powered with a sealed 5V power supply CUI PSK-3D-5.\nThe Solid State Relay is a Panasonic AQJ112V.\n\nThe USB connector is arranged in a way that it is reachable through one of the\nopening on the back. From the front, the machine is entirely unaltered (unlike\nmany of the somewhat ugly PID mods of this machine).\n\nYou connect with a serial console to the PID controller, adjust\nPID parameters and watch an ASCII-art 'graphical' output of the temperature\nsensor (see the picture with the Laptop in view and the rising temperature\ndisplayed).\n\nPID parameters can be tuned with the interface presented on the serial\ninterface and stored in EEPROM.\n\nSerial interface running by default on 38400 bps:\n\n```bash\ntio -b 38400 /dev/ttyUSB0\n```\n\nMenu:\n```\n#            ☕ Gaggia PID controller\n#(c) 2021 Henner Zeller  |  GNU Public License\n#Commands\n#       l - Start log to console. Stop with any key.\n#       L - Ditto. With 'graph'\n#       n - Now. Print PID parameters, last temp and control out.\n#\n#       s \u003csetpoint\u003e - set setpoint.\n#       p \u003cKp\u003e       - set proportional gain.\n#       i \u003cKi\u003e       - set integral gain.\n#       d \u003cKd\u003e       - set derivative gain.\n#\n#       w - Write PID parameters to EEPROM.\n#       r - Restore PID parameters from EEPROM.\n#       h - This help\n```\n\nComponents         | Mounted | Back  | Settings via USB\n-------------------|---------|-------|--------------------------\n![](./img/pid-components.jpg) | ![](./img/built-in.jpg) | ![](./img/backside.jpg) | ![](./img/online-tweak.jpg)\n\n[Max31725]: https://datasheets.maximintegrated.com/en/ds/MAX31725-MAX31726.pdf\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhzeller%2Fgaggia-pid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhzeller%2Fgaggia-pid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhzeller%2Fgaggia-pid/lists"}