在这篇文章中,我想谈谈借助先前制造的CNC机器制造单级正齿轮的情况。

不久前,我
使用CNC设计了
门户机器 ,我的上一篇文章介绍了它在此资源上的开发和构建。
我想马上说,这个项目仅是为了获得简单齿轮副的设计及其制造经验,以便在后续项目中使用。
由于计划在加工的机器上不仅加工木材和塑料,而且加工硬铝,因此使用这种材料制成齿轮对很有趣。
根据供应情况,我有6毫米厚的硬脑膜片碎屑。 作为驱动器,我决定使用步进电机()23HS8430,我也拥有它并且闲置。
设计始于在Compass 3D环境中对整个机构进行建模,由于硬铝毛坯的尺寸小,因此立即存在一些限制,并且由于我的刀具直径最小,因此这影响了从动齿轮的尺寸以及齿的数量和尺寸。 ,只有2mm,这意味着在制造过程中我可以用来描述轮廓的最小半径为1mm。
考虑到所有限制,我将引擎转换为3D模型,然后开始将其余的细节与其配合...
现在,关于齿轮副的构造:在Compass 3D(v13)的工程配置中,有一个实用程序,例如“计算外齿轮的正齿轮”,我们在其中进行几何计算,输入所需的参数:齿数,模数等。 我不会对此进行深入研究,只要从机械学的过程中阅读有关齿轮构造的章节即可:机械零件。

我使用的实用程序执行齿轮的计算和构造,如果在计算过程中发生错误,也会通知您。 计算后,它将显示所有几何尺寸的报告。 从它开始,我只需要中心距,因为它会自动绘制齿轮。

为了获得更多的兴趣,我决定制作齿数不同且齿轮比为2:1的齿轮。

根据中心距离,绘制了基础。 发动机和轴与之配对,从动齿轮将安装在其上。

完成3D设计后,我将所有细节转移到2D视图中,并将其保存为vector * .dxf格式。
为了删除机器上的所有细节,我通过ArtCam程序中的后处理器将矢量格式转换为G代码。 将生成的文件上载到计算机,并在重置坐标后切出所有详细信息。
轴承被压入从动齿轮中,因此进入时非常紧,因为我低估了孔的数百个部分。
另外,从动齿轮所安装的轴在车床上加工。
然后,一切都非常简单,将单元组装成一个单元,仅需扭曲即可。
但是我不得不等待一个月,因为我没有SD的驱动程序,因此我在Ali上订购了DM542驱动程序。
为了使SD旋转到驱动器输入端,需要一个频率信号,为此,我使用外部连接的24脉冲编码器在arduino uno上组装了频率可变的频率发生器。

我想马上预约一下,因为我在Internet上找到了arduino固件的代码。
频率发生器可以:-在16位定时器上产生曲折。 频率范围1Hz-8MHz。 频率调整由编码器执行。 高达2.8 kHz的频率,分辨率为1赫兹;在更高的频率下,计时器不再能够在硬件中支持该分辨率;因此,通过将参数设置为所需频率,而只是增加比较寄存器,就可以合成更高的频率。 事实证明,频率越高,编码器的喀哒声之间的步长就越大。 旋转编码器,不按下按钮,频率变化1Hz; 按下按钮时,一个步骤-100Hz。 高于2.8kHz。 按下按钮旋转编码器也会加快计数速度。 没有软件抑制编码器触点的反弹,因此您需要悬挂0.01..0.1微法拉的电容器。 相对于地球。 按钮上的电容器是可选的。 数学计算的频率输出到该序列。
/* 1 Hz..8 MHz. A0 A1, A2. 0,01..0,1uf 2 . atmega328 (UNO,Nano, MiniPro) */ float freq; void setup() { pinMode (9,OUTPUT); // pinMode(A0,INPUT); // , - pinMode(A1,INPUT); // - . , . pinMode(A2,INPUT_PULLUP); // Serial.begin(9600); PCICR=1<<PCIE1; // PCINT PCMSK1=(1<<PCINT9);// 1 TCCR1A=1<<COM1A0; // OC1A TCCR1B=0;// } ISR (PCINT1_vect){ static boolean gen_mode=0; // static uint32_t enc=1; // uint32_t ocr=OCR1A; uint32_t divider=1; // . byte n=PINC&3; // boolean knopka = PINC&(1<<2); // 0- , 1- . if (freq<2848) gen_mode=0; // if (freq>=2848) gen_mode=1; // OCR // if (n==3||n==0){ if (gen_mode){if (knopka){ if(ocr>0) {ocr--; } } else { if(ocr>9)ocr-=10; } } else knopka? enc++ : enc+=100; // } //end GetUP // if (n==2||n==1){ if (gen_mode){ if (knopka){ if(ocr<65535) {ocr++; } } else { if(ocr<=65525)ocr+=10; } } else {if (knopka) { if (enc>=2)enc--; } else { if (enc>100) enc-=100; } } } //end GetDown if(gen_mode){ OCR1A=ocr; freq= (float)F_CPU/2 / (OCR1A+1); } else { // OCR divider=1; ocr = (F_CPU / enc /2 /divider) -1; if (ocr >65536) { divider=8; ocr = F_CPU / enc /2 /divider; if (ocr >65536) { divider=64; ocr = F_CPU / enc /2 /divider; if (ocr >65536) {divider=256; ocr = F_CPU / enc /2 /divider; if (ocr >65536) { divider=1024; ocr = F_CPU / enc /2 /divider; if (ocr >65536){ocr=65536; }}}}} OCR1A=ocr-1; // switch (divider) { case 1: TCCR1B=1|(1<<WGM12); break; case 8: TCCR1B=2|(1<<WGM12); break; case 64: TCCR1B=3|(1<<WGM12); break; case 256: TCCR1B=4|(1<<WGM12); break; case 1024: TCCR1B=5|(1<<WGM12); break; } freq= (float) F_CPU/2 / (OCR1A+1) /divider; } //end if !gen_mode } void loop() { if (freq <10000) { Serial.print(freq,1);Serial.println(" Hz "); } if (freq >10000) { Serial.print(freq/1000,3);Serial.println(" kHz");} delay(100); }
将所有组件组装,连接并上传到Arduino中的草图后,您可以继续打开它:
现在介绍一下该机构的工作原理:即使在齿轮振铃的情况下,旋转和传动工作也不是一件坏事。 结果,事实证明可以将领先齿轮提升到每秒12.5转,而在被驱动时则分别提高了一半。 产生的频率在400脉冲/转下约为5 kHz。 设置在驱动程序上。 在此频率下,发动机尚未陷入昏迷状态,这意味着可以给出一个频率或更多频率。
感谢您的阅读! :)