数码之家

标题: DIY低成本激光+霍尔转速计 [已开源] [打印本页]

作者: 飞向狙沙    时间: 2025-6-12 15:33
标题: DIY低成本激光+霍尔转速计 [已开源]
硬件地址: 激光转速计

软件地址: 迷你转速计

视频效果:
[attach]2467996[/attach]


最近按照坛友推荐25买了一把山寨戴森吹风机,一直好奇实际转速有多少,正好前段时间看到坛友制作的激光转速计,那就复制一个,原贴:制作激光反射式转速仪与红外遥控器解码 - 创意DIY 数码之家

外壳前后盖拼版打印,所以需要分割,懒得打磨了,出现一堆邮票孔
[attach]2466639[/attach]


元件:
霍尔传感器:A3144E
激光接收器:ISO0103
激光发射管:6MM 5MW 3V激光管
测量范围:
RPS:1-50000
RPM:6-999999
测量距离:
霍尔:1.5cm
激光:贴白纸10cm,铝箔纸之类的距离会增加,未测

RPS实际应该能到6w左右,通过示波器输出信号有时候会显示异常,不确定是不是示波器输出问题,反正5w以下稳定,也就是RPM上限实际为3000000,不过屏幕就放了6位数,显示不过来,所以超过999999直接显示红色999999了

支持激光+霍尔输入,转速模式RPM,计数器模式CTR,红外遥控模式IR(不支持,突然懒得写代码了)
顶部三个按键,
左边电源键加模式,长按开关机,短按切换模式
中间切换键,短按切换激光/霍尔
右边启动/停止


屏幕顶部显示模式:中间MAX停止时为最大值,启动时显示RPM,下边显示RPS,右下角显示LD激光/HL霍尔
[attach]2466640[/attach]

计数器模式
[attach]2466645[/attach]

实测:霍尔模式
[attach]2466646[/attach]

激光模式
[attach]2466647[/attach]


通过频率发生器直接给信号测试,内置RC时钟源,测试结果还算准确,偏差不大
[attach]2466649[/attach]

[attach]2466650[/attach]

[attach]2466651[/attach]

[attach]2466652[/attach]

[attach]2466653[/attach]

背面,现在测试,所以没贴电池,正常使用可以贴个锂电池,厚度随意,长宽看着能塞进去就行,已经尽量把元件往边上放了。
另外需要注意的就是激光二极管焊接一定要快,磨磨唧唧的焊接很容易挂掉。
[attach]2466655[/attach]


硬件没啥好说的,激光二极管发射信号,霍尔和激光接收管接受信号,其他都是屏幕充电类的辅助电路
[attach]2466700[/attach]





作者: 飞向狙沙    时间: 2025-6-12 15:37
本来准备使用自定义字体,搞了个数码管字体,看着还行,结果发现自定义字体不支持设置背景色,只能先刷一层黑色再输出数字,导致闪屏严重,无奈使用内置字体,有点丑

  1. #include "common.h"

  2. #include "Arduino.h"
  3. #include <Adafruit_GFX.h>      
  4. #include <Adafruit_ST7735.h>
  5. #include "OneButton.h"

  6. // #include "DS_Digital12pt7b.h"
  7. // #include "DS_Digital18pt7b.h"
  8. // #include "Fonts/FreeSerifBold18pt7b.h"
  9. // #include "Fonts/FreeSerifBold12pt7b.h"
  10. // LCD
  11. SPIClass SPI_2(LCD_MOSI,LCD_MISO,LCD_SCK,-1);
  12. Adafruit_ST7735 tft = Adafruit_ST7735(&SPI_2,LCD_CS, LCD_DC, LCD_RES);

  13. //key
  14. OneButton btnPower(POWER_S, true);
  15. OneButton btn2(KEY2,true);
  16. OneButton btn3(KEY3,true);


  17. #define UPPER_LIMIT 999999

  18. // MENU
  19. //菜单选项,取值123,切换菜单是设置为对应负值
  20. signed char menu=-1;
  21. #define menuRPM 1
  22. #define menuCTR 2
  23. #define menuIR 3

  24. //是否激光模式 true激光 false霍尔
  25. bool isLD=true;
  26. //是否启动
  27. bool isStart=false;
  28. //计数器 计数统计
  29. unsigned long count = 0;
  30. //频率计 记录上次触发时间
  31. unsigned long lastTime = 0;
  32. //频率计 触发间隔,用于计算频率
  33. long delayTime = 0;
  34. float rps = 0.0;
  35. float rpsMax= 0.0;
  36. bool isBtn2Click=false;
  37. bool isBtn3Click=false;
  38. //计数器模式 启动时间
  39. int startTime = 0;
  40. long runningTime;

  41. void pulseInterrupt() {
  42.   long micro=micros();
  43.   delayTime=micro-lastTime;
  44.   lastTime=micro;
  45.   count++;
  46. }

  47. //GPIO初始化
  48. void initPin(){
  49.   pinMode(POWER_C,OUTPUT);
  50.   pinMode(POWER_S,INPUT_PULLUP);
  51.   pinMode(KEY2,INPUT_PULLUP);
  52.   pinMode(KEY3,INPUT_PULLUP);

  53.   pinMode(LD_CTRL, OUTPUT);
  54.   pinMode(SIGNAL,INPUT_PULLUP);
  55.   pinMode(LD_POWER,OUTPUT);
  56.   pinMode(HL_POWER,OUTPUT);

  57.   pinMode(LCD_BLK,OUTPUT);
  58.   pinMode(BAT_ADC,INPUT);

  59.   digitalWrite(POWER_C,LOW);
  60.   digitalWrite(LD_CTRL,LOW);
  61.   digitalWrite(LD_POWER, LOW);
  62.   digitalWrite(HL_POWER, HIGH);
  63.   digitalWrite(LCD_BLK, LOW);
  64. }
  65. //电源键单击
  66. void btnPowerClick(){
  67.   menu++;
  68.   if(menu>3)
  69.     menu=1;
  70.   menu=-menu;
  71. }
  72. //电源键长按
  73. void btnPowerLongPress(){
  74.   powerOff();
  75. }
  76. void btn2Click(){
  77.   isBtn2Click=true;
  78. }
  79. void btn3Click(){
  80.   isBtn3Click=true;
  81. }
  82. //屏幕初始化
  83. void initLCD(){
  84. // INITR_GREENTAB
  85. // INITR_144GREENTAB
  86. // INITR_HALLOWING
  87. // INITR_MINI160x80
  88. // INITR_MINI160x80_PLUGIN
  89. // INITR_BLACKTAB
  90. // INITR_HALLOWING
  91. // tft.initR(INITR_MINI160x80_PLUGIN);

  92.   tft.initR(INITR_MINI160x80_PLUGIN);
  93.   // tft.setTextWrap(true);
  94.   tft.setFont(NULL);
  95.   tft.setRotation(1);
  96.   tft.fillScreen(ST7735_BLACK);
  97.   digitalWrite(LCD_BLK,HIGH);
  98. }

  99. //开机
  100. void powerOn(){
  101.   digitalWrite(POWER_C,HIGH);
  102. }

  103. //关机
  104. void powerOff(){
  105.   digitalWrite(POWER_C,LOW);
  106. }
  107. void startLD(){
  108.   digitalWrite(LD_CTRL,HIGH);
  109.   digitalWrite(LD_POWER,LOW);
  110.   attachInterrupt(digitalPinToInterrupt(SIGNAL), pulseInterrupt, FALLING);  // 下降沿触发   
  111. }
  112. void stopLD(){
  113.   digitalWrite(LD_CTRL,LOW);
  114.   digitalWrite(LD_POWER,HIGH);
  115.   detachInterrupt(digitalPinToInterrupt(SIGNAL));
  116. }
  117. void startHALL(){
  118.   digitalWrite(HL_POWER,LOW);
  119.   attachInterrupt(digitalPinToInterrupt(SIGNAL), pulseInterrupt, FALLING);  // 下降沿触发
  120. }
  121. void stopHALL(){
  122.   digitalWrite(HL_POWER,HIGH);
  123.   detachInterrupt(digitalPinToInterrupt(SIGNAL));
  124. }

  125. void stop(int menu){
  126.   isStart=false;
  127.   stopLD();
  128.   stopHALL();
  129. }
  130. // 刷新电池图标
  131. void refreshBat(){
  132.     int analogValue = analogRead(BAT_ADC);
  133.     int endX=156;
  134.     int length=24;
  135.     // 4.15(643)满格  3.5(543)没电
  136.     int max=643;
  137.     int min=543;
  138.     float step=(max-min)/length;
  139.     step=(analogValue-min)/step;
  140.     if(step<0)
  141.       step=0;
  142.     else if(step>length)
  143.       step=length;
  144.     length=round(step);
  145.     //电池头
  146.     tft.fillRect(130,7,2,10,ST7735_WHITE);
  147.     //电池体外壳
  148.     tft.drawRect(132,4,26,16,ST7735_WHITE);
  149.     //清空
  150.     tft.fillRect(133,5,24,14,ST7735_BLACK);
  151.     //电量
  152.     tft.fillRect(endX-length+1,5,length,14,ST7735_GREEN);
  153. }
  154. //菜单切换
  155. void switchMenu (int menu){
  156.   tft.fillScreen(ST7735_BLACK);
  157.   tft.fillRect(0,0,120,24,ST7735_BLACK);
  158.   tft.drawRect(0,0,41,24,ST7735_GREEN);
  159.   tft.drawRect(40,0,41,24,ST7735_GREEN);
  160.   tft.drawRect(80,0,41,24,ST7735_GREEN);
  161.   tft.fillRect((menu-1)*40,0,41,24,ST7735_GREEN);

  162.   // tft.setFont(&FreeSerifBold12pt7b);
  163.   tft.setTextSize(2);

  164.   tft.setTextColor(menu==1?ST7735_RED:ST7735_GREEN);
  165.   tft.setCursor(3,5);
  166.   tft.print("RPM");
  167.   tft.setTextColor(menu==2?ST7735_RED:ST7735_GREEN);
  168.   tft.setCursor(43,5);
  169.   tft.print("CTR");
  170.   tft.setTextColor(menu==3?ST7735_RED:ST7735_GREEN);
  171.   tft.setCursor(88,5);
  172.   tft.print("IR");

  173.   tft.fillRect(0,25,160,55,ST7735_BLACK);
  174. }
  175. //刷新RPM界面
  176. void refreshRPM(){

  177.   float rps;
  178.   char buffer[7]; // 6位数字 + 1位字符串结束符 '\0'
  179.   long lRps; // 四舍五入取整
  180.   long ms=millis();


  181.   //micro时钟溢出或者第一次统计,不计算
  182.   if(delayTime>0){
  183.     rps=1000000.0/delayTime;
  184.     if((rps*60)<6)
  185.       rps=0;
  186.   }

  187.   //最低频率限制 6rpm,小于6rpm时为0
  188.   if((lastTime/1000+1000*10)<ms)
  189.     rps=0;

  190.   if(rpsMax<rps)
  191.     rpsMax=rps;
  192.   if(!isStart){
  193.     rps=rpsMax;
  194.   }
  195.   // tft.setFont(&FreeSerifBold12pt7b);
  196.     tft.setTextSize(2);
  197.   tft.setTextColor(ST7735_YELLOW,ST7735_BLACK);
  198.   tft.setCursor(0,40);
  199.   if(isStart)
  200.     tft.print("RPM:");
  201.   else
  202.     tft.print("MAX:");

  203.   tft.setTextColor(ST7735_MAGENTA,ST7735_BLACK);
  204.   tft.setCursor(0,65);
  205.   tft.print("RPS:");

  206.   tft.setTextColor(ST7735_MAGENTA,ST7735_BLACK);
  207.   tft.setCursor(52,65);
  208.   lRps= (long)round(rps);
  209.   sprintf(buffer, "%05d", lRps);
  210.   //  tft.fillRect(45, 60, 115, 20, ST7735_BLACK);
  211.   tft.print(buffer);

  212.   // tft.setFont(&FreeSerifBold18pt7b);
  213.   tft.setTextSize(3);
  214.   tft.setCursor(52,35);
  215.   lRps= (long)round(rps*60);
  216.   //上限999999,超过999999显示999999红色
  217.   tft.setTextColor(lRps<UPPER_LIMIT?ST7735_YELLOW:ST7735_RED,ST7735_BLACK);
  218.    if(lRps>UPPER_LIMIT){
  219.     lRps=UPPER_LIMIT;
  220.    }
  221.   sprintf(buffer, "%06d", lRps);
  222.   //  tft.fillRect(45, 30, 115, 30, ST7735_BLACK);
  223.   tft.print(buffer);

  224.   tft.setTextSize(2);
  225.   tft.setTextColor(isStart?ST7735_GREEN:ST7735_RED,ST7735_BLACK);
  226.   tft.setCursor(135,65);
  227.   tft.print(isLD?"LD":"HL");
  228.   
  229. }

  230. void refreshCTR(){
  231.   if(isStart){
  232.     runningTime=millis()/1000-startTime/1000;
  233.   }
  234.   char buffer[9]; // 6位数字 + 1位字符串结束符 '\0'

  235.   tft.setTextSize(2);
  236.   tft.setTextColor(ST7735_YELLOW,ST7735_BLACK);
  237.   tft.setCursor(0,40);
  238.   tft.print("CTR:");

  239.   int hours = runningTime / 3600;
  240.   int remainingSeconds = runningTime % 3600;
  241.   int minutes = remainingSeconds / 60;
  242.   int seconds = remainingSeconds % 60;
  243.   sprintf(buffer, "%02d:%02d:%02d", hours, minutes, seconds);
  244.   tft.setTextColor(ST7735_MAGENTA,ST7735_BLACK);
  245.   tft.setCursor(0,65);
  246.   tft.print(buffer);

  247.   tft.setTextSize(3);
  248.    tft.setTextColor(ST7735_YELLOW,ST7735_BLACK);
  249.    tft.setTextColor(count<UPPER_LIMIT?ST7735_YELLOW:ST7735_RED,ST7735_BLACK);
  250.   tft.setCursor(52,35);
  251.   sprintf(buffer, "%06d", count<UPPER_LIMIT?count:UPPER_LIMIT);
  252.   tft.print(buffer);

  253.   tft.setTextSize(2);
  254.   tft.setTextColor(isStart?ST7735_GREEN:ST7735_RED,ST7735_BLACK);
  255.   tft.setCursor(135,65);
  256.   tft.print(isLD?"LD":"HL");
  257. }

  258. void btnHandler(){

  259.   //菜单切换
  260.   if(menu<0){
  261.     menu=-menu;
  262.     switchMenu(menu);

  263.     isStart=false;
  264.     stop(menu);

  265.     switch(menu){
  266.       case 1:
  267.         rps=0;
  268.         delayTime=100000000;
  269.         rpsMax=0;
  270.         break;
  271.       case 2:
  272.         count=0;  
  273.         startTime=millis();
  274.         runningTime=0;
  275.     }

  276.   }


  277.   //RPM页面按键处理
  278.   if(menu==1){
  279.     if(isBtn2Click){
  280.       isBtn2Click=false;
  281.       isLD=!isLD;
  282.     }
  283.     if(isBtn3Click){
  284.       isBtn3Click=false;
  285.       isStart=!isStart;
  286.       if(isStart){
  287.         rps=0;
  288.         rpsMax=0;
  289.         if(isLD)
  290.           startLD();
  291.         else
  292.           startHALL();
  293.       }else{
  294.         stop(menu);
  295.       }
  296.     }
  297.     //CTR页面按键处理
  298.   }else if(menu==2){
  299.     if(isBtn2Click){
  300.       isBtn2Click=false;
  301.       isLD=!isLD;
  302.     }
  303.     if(isBtn3Click){
  304.       isBtn3Click=false;
  305.       isStart=!isStart;
  306.       if(isStart){
  307.          count=0;  
  308.         startTime=millis();
  309.         if(isLD)
  310.           startLD();
  311.         else
  312.           startHALL();
  313.       }else{
  314.         stop(menu);
  315.       }
  316.     }
  317.   }
  318.   else if(menu==3){

  319.   }
  320. }

  321. void setup() {
  322.   Serial.setTx(SERIAL_TX);
  323.   Serial.setRx(SERIAL_RX);
  324.   Serial.begin(115200);

  325.   initPin();
  326.   delay(800);
  327.   powerOn();

  328.   initLCD();

  329.   btnPower.attachClick(btnPowerClick);
  330.   btnPower.attachLongPressStart(btnPowerLongPress);
  331.   btn2.attachClick(btn2Click);
  332.   btn3.attachClick(btn3Click);
  333. }
  334. long refreshTime;

  335. // the loop function runs over and over again forever
  336. void loop() {
  337.   long ms=millis();

  338.   //屏幕刷新
  339.   if((ms-refreshTime)>200){
  340.     refreshTime=ms;
  341.     refreshBat();
  342.     if(menu==1)
  343.       refreshRPM();
  344.     else if (menu==2){
  345.       refreshCTR();
  346.     }
  347.   }

  348.   //按键tick
  349.   btnPower.tick();
  350.   btn2.tick();
  351.   btn3.tick();

  352.   //按键处理
  353.   btnHandler();
  354. }

复制代码



作者: confessor    时间: 2025-6-12 15:53
这个有点儿高级了,不知道打板文件能不能分享一下啊!复刻成本大概在多少啊?

作者: 飞向狙沙    时间: 2025-6-12 16:00
confessor 发表于 2025-6-12 15:53
这个有点儿高级了,不知道打板文件能不能分享一下啊!复刻成本大概在多少啊?
...

打样文件要是有人玩的话我整理一下可以开源出来,成本为这个屏幕+激光管+激光接收+霍尔+单片机10块左右,剩下的各种容阻三极管有库存就花不了钱,没库存的话采购起来稍微麻烦点,估计也就是十块钱吧。
作者: sadfun    时间: 2025-6-12 16:16
谢谢分享~进来学习一下
作者: hbdj1234    时间: 2025-6-12 16:17
看着非常不错
作者: majiwu1234    时间: 2025-6-12 16:19
好东西,楼主玩的都是高科技啊,有需要的坛友可以找你订做成品,估计成本不到30元吧(不含外壳,小锂电)。
作者: confessor    时间: 2025-6-12 16:25
飞向狙沙 发表于 2025-6-12 16:00
打样文件要是有人玩的话我整理一下可以开源出来,成本这个屏幕+激光管+激光接收+霍尔+单片机10块左右,剩 ...

我手头有8h1k08a 不知道能否通用?

作者: muyan    时间: 2025-6-12 16:26
飞向狙沙 发表于 2025-6-12 16:00
打样文件要是有人玩的话我整理一下可以开源出来,成本这个屏幕+激光管+激光接收+霍尔+单片机10块左右,剩 ...

直接立创开源吧
作者: laipihou    时间: 2025-6-12 16:51
估计众仪和菲尼瑞斯的测速仪马上就要出来了
作者: fqazwsx12    时间: 2025-6-12 17:43
好啊,这个感觉很多人想要一个玩
作者: mhtlov    时间: 2025-6-12 17:52
额,工具越来越多
作者: just56    时间: 2025-6-12 17:57
我的中仪VA8030转速表

量程才3万转,只够测测小风扇
测现在的高速无刷动辄超量程
大佬如果开团购的话真想买个成品了

作者: shuzhi    时间: 2025-6-12 18:20
示波器不错,自己做的吗?
作者: 飞向狙沙    时间: 2025-6-12 19:45
majiwu1234 发表于 2025-6-12 16:19
好东西,楼主玩的都是高科技啊,有需要的坛友可以找你订做成品,估计成本不到30元吧(不含外壳,小锂电)。 ...

不到30,到时候整理下开源
作者: 飞向狙沙    时间: 2025-6-12 19:46
confessor 发表于 2025-6-12 16:25
我手头有8h1k08a 不知道能否通用?

主控stm32g030c8t6
作者: 飞向狙沙    时间: 2025-6-12 19:56
just56 发表于 2025-6-12 17:57
我的中仪VA8030转速表

量程才3万转,只够测测小风扇

以前的风扇3w还行,玩高速涵道的话确实不够看,动不动10w+,这几天会开源,就不开团了,没那个心思
作者: just56    时间: 2025-6-12 22:11
飞向狙沙 发表于 2025-6-12 19:56
以前的风扇3w还行,玩高速涵道的话确实不够看,动不动10w+,这几天会开源,就不开团了,没那个心思 ...

很多开源项目,最后反而让中间商赚差价了,绝大多数普通用户不具备焊接贴片的能力,不如动员斑竹把优秀作品加入魅色系列全家桶,既摊薄成本节约时间,也能让玩家花钱支持论坛
作者: weln2016    时间: 2025-6-12 23:14
这个有点牛啊
作者: dirtyacc    时间: 2025-6-12 23:50
做得挺好的,迟下抄一个
作者: dirtyacc    时间: 2025-6-13 00:01
just56 发表于 2025-6-12 22:11
很多开源项目,最后反而让中间商赚差价了,绝大多数普通用户不具备焊接贴片的能力,不如动员斑竹把优秀作 ...

我去年买了个ptc加热板,就是某仙子的,不到10元一块,让我思路大开。从此不再怕贴片。练习贴2,3次就能贴出机器差不多的效果。从去年9月开始到现在已经做了超过20个贴片diy项目,包括仿做这种比较多元件的差分探头:
https://oshwhub.com/adminismk/50 ... -differential-probe
[attach]2466944[/attach]
作者: wlhcq    时间: 2025-6-13 09:49
谢谢分享,收藏备用。
作者: 汪洋中的船    时间: 2025-6-13 10:45
laipihou 发表于 2025-6-12 16:51
估计众仪和菲尼瑞斯的测速仪马上就要出来了

哈哈,你太懂这两家了。
作者: wfhwfh    时间: 2025-6-13 11:20
好东西啊,最近做了两个暴力风扇一直测不了转速,,但我又懒得DIY
作者: 飞向狙沙    时间: 2025-6-13 11:27
wfhwfh 发表于 2025-6-13 11:20
好东西啊,最近做了两个暴力风扇一直测不了转速,,但我又懒得DIY

你啥时候用找我,你出邮费,我免费借你用
作者: 飞向狙沙    时间: 2025-6-13 11:32
just56 发表于 2025-6-12 22:11
很多开源项目,最后反而让中间商赚差价了,绝大多数普通用户不具备焊接贴片的能力,不如动员斑竹把优秀作 ...

咋说呢,有些diy确实有玩家群体,作品也够好,开团直接smt,方便了大家,自己也能有点外块,我就不一样了,diy的东西也就那样,还经常容易烂尾,有那么三五个人想玩,不值当开团,开了还得手工焊接,卖的贵了我觉着不合适,卖的便宜了我又不想浪费精力,我这快递又贵,每件还得再加10块+的邮费,所以就不想费那劲了
作者: yanghc    时间: 2025-6-13 11:41
感兴趣跟着做一个,如果开源就更好了。谢谢楼主分享。
作者: confessor    时间: 2025-6-13 11:58
just56 发表于 2025-6-12 22:11
很多开源项目,最后反而让中间商赚差价了,绝大多数普通用户不具备焊接贴片的能力,不如动员斑竹把优秀作 ...

这个创意也很好!

作者: liding    时间: 2025-6-13 13:04
转速表呀!!!
作者: just56    时间: 2025-6-13 13:11
飞向狙沙 发表于 2025-6-13 11:32
咋说呢,有些diy确实有玩家群体,作品也够好,开团直接smt,方便了大家,自己也能有点外块,我就不一样了 ...

关于快递费,我最寄了很多
在微信/支付宝小程序搜菜鸟裹裹
特惠寄券后两三元,每月还会有寄件日免首重
本月寄件日是后天(6月15日)
作者: shzm55    时间: 2025-6-13 14:38
这东西不错哎,感谢分享
作者: zjk103    时间: 2025-6-13 15:24
不错不错,我也做一个试试
作者: jpdd521    时间: 2025-6-13 17:42
dirtyacc 发表于 2025-6-13 00:01
我去年买了个ptc加热板,就是某仙子的,不到10元一块,让我思路大开。从此不再怕贴片。练习贴2,3次就能贴 ...

加热板确实不错,就是做一个不划算,还是多做一些合适
作者: kkdkj    时间: 2025-6-13 18:11
牛!高手呀,只有羡慕的份了
作者: 沙漠臭屁虫    时间: 2025-6-13 18:18
这个做法好,放口袋里
作者: 亚历山大    时间: 2025-6-13 20:55
这个安逸,可以测100万转
作者: wzj9944    时间: 2025-6-14 02:11
记号一下,帮顶,感谢楼主开源
作者: lixing628    时间: 2025-6-14 09:49
这个技术牛
作者: confessor    时间: 2025-6-14 10:34
楼主真开源了啊   ,马上去复刻一个。

作者: BG1FKV    时间: 2025-6-14 10:56
感谢LZ的分享
作者: ruanguohan    时间: 2025-6-14 12:15
谢谢分享!最近想学单片机,看看能仿一个不
作者: 飞向狙沙    时间: 2025-6-14 13:22
yanghc 发表于 2025-6-13 11:41
感兴趣跟着做一个,如果开源就更好了。谢谢楼主分享。

已开源,欢迎diy
作者: 飞向狙沙    时间: 2025-6-14 13:25
just56 发表于 2025-6-13 13:11
关于快递费,我最寄了很多
在微信/支付宝小程序搜菜鸟裹裹
特惠寄券后两三元,每月还会有寄件日免首重

刚才看了下特惠寄6.5
作者: win2003sp2    时间: 2025-6-14 14:02
立创的给删 了?

作者: 飞向狙沙    时间: 2025-6-14 14:40
win2003sp2 发表于 2025-6-14 14:02
立创的给删 了?

调整了点内容,立创又给下架等审核了
作者: 994297828    时间: 2025-6-14 16:56
大佬们多做几个,手残党搞不定
作者: arzeng    时间: 2025-6-14 17:28
本帖最后由 arzeng 于 2025-6-14 18:04 编辑

精致小巧又高端
喜欢DIY的朋友通常专业仪器不多,买成品吧很少用到好像又没必要,这个成本不高适合DIY们拥有。

作者: 飞向狙沙    时间: 2025-6-14 18:40
ruanguohan 发表于 2025-6-14 12:15
谢谢分享!最近想学单片机,看看能仿一个不

欢迎一块玩
作者: 飞向狙沙    时间: 2025-6-14 18:42
994297828 发表于 2025-6-14 16:56
大佬们多做几个,手残党搞不定

都是0603,typec也用的6p的,焊接难度不大的
作者: just56    时间: 2025-6-14 20:58
飞向狙沙 发表于 2025-6-14 13:25
刚才看了下特惠寄6.5

可能派券有大数据杀熟,
菜鸟是和淘宝绑定的,
我是为了方便驿站取件抓的菜鸟裹裹APP
上个月寄件发现每次打开APP都弹出券[attach]2468333[/attach]
[attach]2468332[/attach]

作者: skyline007    时间: 2025-6-14 21:19
谢谢分享,期待开源资料复刻
作者: 心想事成    时间: 2025-6-14 23:16
这个过于深奥,搞不了,帮顶了
作者: 枫飞秋语    时间: 2025-6-15 02:24
先收为敬,玩了段时间航模,一直想弄个测转速的,看看电机配不同的桨,转速和电流的区别
作者: wfm324    时间: 2025-6-15 05:02
很不错,有时间也做一个
作者: mengfc    时间: 2025-6-15 06:07
以前一直想拥有一个转速计,感谢楼主!
作者: chenxi0452    时间: 2025-6-15 06:30
这个牛了
作者: 诸葛容若    时间: 2025-6-15 06:45
好东西,先留个爪印,话说没有加热平台贴片确实考验手艺,但是自己做一个又感觉不划算。。。。
作者: 汪洋中的船    时间: 2025-6-15 11:52
谁来出个套件,个人买零件太麻烦了也用不完。
作者: 飞向狙沙    时间: 2025-6-15 12:11
汪洋中的船 发表于 2025-6-15 11:52
谁来出个套件,个人买零件太麻烦了也用不完。

大家都没库存吗
作者: hbdj1234    时间: 2025-6-15 12:35
dirtyacc 发表于 2025-6-13 00:01
我去年买了个ptc加热板,就是某仙子的,不到10元一块,让我思路大开。从此不再怕贴片。练习贴2,3次就能贴 ...

我的加热板烂尾了,都买全了弄到一半了,有时间了从新弄,主要有热风枪加热板很少用
作者: 飞向狙沙    时间: 2025-6-15 13:13
汪洋中的船 发表于 2025-6-15 11:52
谁来出个套件,个人买零件太麻烦了也用不完。

手里元件还有几个库存,过几天商城上架几个
作者: 微醉    时间: 2025-6-15 14:33
本帖最后由 微醉 于 2025-6-15 14:34 编辑

倒是挺好玩的小工具,只是单片机的玩意搞不来,佩服玩代码的高手。
话说楼主可以可以多练练手速了,等到视频那手速上四位数了说不定粉丝大涨
作者: 飞向狙沙    时间: 2025-6-15 14:39
微醉 发表于 2025-6-15 14:33
倒是挺好玩的小工具,只是单片机的玩意搞不来,佩服玩代码的高手。
话说楼主可以可以多练练手速了, ...

舌头上4位数是不是更能涨粉
作者: benx    时间: 2025-6-15 18:13
这个很厉害
作者: 玛德陛下    时间: 2025-6-15 18:29
自制测速可以啊
作者: 梅花一党    时间: 2025-6-15 18:47
我用万用表频率档搞过。

其实,最好用STC8051做一个。
作者: 飞向狙沙    时间: 2025-6-15 21:00
梅花一党 发表于 2025-6-15 18:47
我用万用表频率档搞过。

其实,最好用STC8051做一个。

习惯了arduino,懒得搞寄存器了
作者: lookball    时间: 2025-6-16 00:10
这个不错,可惜不会玩单片机。
作者: piaoxue20000    时间: 2025-6-16 08:38
好东西啊,可惜不知道做了有什么用,就纯粹支持下
作者: clbxclbx    时间: 2025-6-16 10:32
厉害厉害
作者: jerry0412    时间: 2025-6-16 13:11
飞向狙沙 发表于 2025-6-12 16:00
打样文件要是有人玩的话我整理一下可以开源出来,成本为这个屏幕+激光管+激光接收+霍尔+单片机10块左右, ...

支持开源,谢谢!
作者: ba21    时间: 2025-6-16 15:07
優秀文章
作者: 南宁谢工    时间: 2025-6-16 17:19
laipihou 发表于 2025-6-12 16:51
估计众仪和菲尼瑞斯的测速仪马上就要出来了

哈哈,直接抄就行,工程师只需要会复制粘贴就行。
作者: 南宁谢工    时间: 2025-6-16 17:24
如果大家有需求,不知道版主会不会愿意把它打造成当年的充电器那样上架。
作者: just56    时间: 2025-6-16 19:37
piaoxue20000 发表于 2025-6-16 08:38
好东西啊,可惜不知道做了有什么用,就纯粹支持下

DIY调试航模、暴力风扇、打磨机,需要测转速
作者: add    时间: 2025-6-17 09:48
阿迪洛板子开发的
作者: sccz123    时间: 2025-6-17 17:33
这个是真高端,只有羡慕的份了,绑定
作者: hiajane    时间: 2025-6-17 23:35
不错,软件也有功夫
作者: 微笑的先生    时间: 2025-6-18 10:06
直接做成品开团,我支持!
作者: 几米小山    时间: 2025-6-18 10:29
努力争取看懂系列+1.。。。多学习,感谢分享
作者: luckhare    时间: 2025-6-18 10:30
飞向狙沙 发表于 2025-6-12 15:37
本来准备使用自定义字体,搞了个数码管字体,看着还行,结果发现自定义字体不支持设置背景色,只能先刷一层 ...

非常不错
作者: ok_good    时间: 2025-6-19 07:44
这个牛啊
作者: xueyeteng    时间: 2025-6-20 08:37
just56 发表于 2025-6-12 22:11
很多开源项目,最后反而让中间商赚差价了,绝大多数普通用户不具备焊接贴片的能力,不如动员斑竹把优秀作 ...

是啊,普通玩家凑够元件就很费事,反而不如弄个半成品或成品更方便。
作者: yueguang3048    时间: 2025-6-20 11:28
楼主是女孩子吗?  如果是,那是很厉害的存在呢
作者: 飞向狙沙    时间: 2025-6-20 15:47
yueguang3048 发表于 2025-6-20 11:28
楼主是女孩子吗?  如果是,那是很厉害的存在呢

男孩子就不厉害么
作者: 不长叶子的树    时间: 2025-6-20 21:44
微笑的先生 发表于 2025-6-18 10:06
直接做成品开团,我支持!

可以换购了:https://www.mydigit.cn/thread-528088-1-1.html
作者: yongshuo    时间: 2025-6-21 07:49
测量范围:
RPS:1-50000
RPM:6-999999

作者: 大漠无雪    时间: 2025-6-21 15:16
有成品吗?   
作者: 飞向狙沙    时间: 2025-6-21 18:03
大漠无雪 发表于 2025-6-21 15:16
有成品吗?

预售,还有几个
作者: 13818703907    时间: 2025-6-21 18:06
这个很高级,慢慢学习学习,感谢大神分享。
作者: 飞向狙沙    时间: 2025-6-21 21:03
13818703907 发表于 2025-6-21 18:06
这个很高级,慢慢学习学习,感谢大神分享。

不考虑屏幕的话其实难度跟按键点灯差不太多
作者: k1503    时间: 2025-6-22 07:23
这个相当给力, 我也要去整一个
作者: dirtyacc    时间: 2025-6-22 12:51
[attach]2474596[/attach]
就剩几个测量元件就好了。LD HD是什么意思?
作者: 飞向狙沙    时间: 2025-6-22 13:23
dirtyacc 发表于 2025-6-22 12:51
就剩几个测量元件就好了。LD HD是什么意思?

卧槽,快呀,LD是激光,HL是霍尔,电池下边那道横线是关机倒计时,CTR下不自动关机,其他的倒计时三分钟关机,按任意键重新计时
作者: dirtyacc    时间: 2025-6-22 13:49
飞向狙沙 发表于 2025-6-22 13:23
卧槽,快呀,LD是激光,HL是霍尔,电池下边那道横线是关机倒计时,CTR下不自动关机,其他的倒计时三分钟 ...

看见就想整了,全开源,学习和实用都很有意思的项目
作者: 飞向狙沙    时间: 2025-6-22 14:33
dirtyacc 发表于 2025-6-22 13:49
看见就想整了,全开源,学习和实用都很有意思的项目

欢迎探讨,自己玩充电电路开关机电路全砍了也挺简单的,核心就一个io外部中断
作者: 飞向狙沙    时间: 2025-6-22 17:59
微笑的先生 发表于 2025-6-18 10:06
直接做成品开团,我支持!


还有最后一个,要不要来支持下
https://www.mydigit.cn/thread-528088-1-1.html
作者: ok_good    时间: 2025-6-23 07:36
这个好玩
作者: 微笑的先生    时间: 2025-6-23 09:59
飞向狙沙 发表于 2025-6-22 17:59
还有最后一个,要不要来支持下
https://www.mydigit.cn/thread-528088-1-1.html

那必须的!
作者: 赛博无为    时间: 2025-6-23 15:47
优秀呀




欢迎光临 数码之家 (https://www.mydigit.cn/) Powered by Discuz! X3.4