AbeAnd Log

From Open Source Ecology
Jump to: navigation, search

HintLightbulb.png Status - Done: more D3D Mini PVC clamp designs To Do: clamp part details & frame assembly Blocks: part details & time

General links Critical Path Roadmap mediawiki formatting help Development Team Log OSE Hangout OSE Jitsi Meet Abe's Links Abe's OSE Google Drive Folder Abe's OSE Google Calendar Abe's YouTube channel

Current Logs

Fri Mar 22, 2019

Golf Cart Design Sprint - working on Hydraulic Power Cube Power Cube v19.02

Thur Mar 21, 2019

I started recreating the 3D printable corner from basic primitives this will be ideal since it should also be easy to modify from the PVC design for more features.

Wed Mar 20, 2019

uploaded Meeting to YT https://www.youtube.com/watch?v=JwrLvKbbTzM

started modifying PVC corner to 3DP version with inside friction fittings. Some issues editing it. I figured it might be faster to draw it from scratch.


Tues Mar 19, 2019

Checking more measurements and alignments with the top X-axis. Another thing I noticed is how the extruder motor is on top and the hot end is high, which is the reason the bed is raised in the v19.02 prototype. The 1" metal frame should be more than the 3/4" tube frame allowing it to work similarly.

Sun Mar 17, 2019

Looking at the design of the underslung X-axis/extruder for possible use on the PVC mini-assembly.

With the design of D3D v19.02 ongoing the features from the X-axis underslung extruder and for more universal part usage it would be nice to make parts so they are compatible. The main question is do parts need to be modified for a range of fits and is that viable.


If the clamp is all the way up against the corner there is ~0.25in between the top hole in the Y axis and the angle clamp to the X-axis on top. To keep the length of the X axis the same I think the angle brackets could mount to the inside instead of the outside of the Y axis' carriages. To line up bolt holes the angle bracket would need to be extended down about 1/2" and it might be ideal to make the bolt holes slots. That could work as long as it didn't allow slippage downward over time.

Wed Mar 13, 2019

adjusted youtube meeting upload to public from private default. Still confused by audio system settings and OBS. In previous recordings and in testing I thought I had it so there was no feedback when using my headset mic and external speakers together, but in this recording it is definitely audible when I unmute my headset.

Tues Mar 12, 2019

todays meeting. I'm not sure if it was on my end, but there still seems to be some audio issues, but it mostly sounds good other than some sections where there is nothing. More testing is in order. I wonder if some of it is Jitsi. https://youtu.be/XwU_aPO0NFg

( Eric here, Didn't this happen on Marcin's end a while back, and we thought it was the mic but it was either the DAC or Jitzi (I forgot which)? Either way, at least in that instance, it wasn't debilitating, it just bugged audio snobbs such as myself. I'll need to watch this weeks video and seee if it was a similar issue. )

Abe - That noisy mic audio issue is still a problem. It occurs for me as well sometimes using vokoscreen. Using OBS I've had good results a few times, but I keep adjusting settings and there may be other related glitches due to the Linux audio subsystems I'm not so sure yet. In this weeks video at a mid-point I clicked the wrong button in jitsi and had to rejoin and then realized my headset mic wasn't on in the Ubuntu audio settings at which point I changed the defaults in sound settings, which may have disrupted OBS. I'll try to review further to see if I can see what happened. It can be visually confusing because I often use dual monitors during meetings.

Mon Mar 11, 2019


Sun Mar 10, 2019


I added notes and images to the freecad tutorial doc I started last year about 2d drawing tracing in the GC motor file, but not thorough as I wanted to keep going on the PVC Mini assembly.

I started to add a recent extruder, but the configurations are for the new overhead X axis design. I'll go through history, but likely have to rebuild something similar with the newer part designs. Some of the new parts look ideal to use on all designs, but I need to consider size of mount parts like the new fan duct(s). Adding mass of like that of the large fan duct on the PVC version would make it shakier than on the pro version with the extra axis' etc. The small duct looks good enough for the PVC Mini. The other new side mounts seem unnecessary. The plates that bolt around the carriage are interesting and as I understood that was due to the previous motor holder bolts not holding well so those may be the way to go. The important question is whether it requires more unique parts. I'm not sure another redesign of a similar motor/extruder holder is viable.

Sat Mar 9, 2019

Using FreeCAD 0.17 and comparing to 0.16 yesterday I noticed a few annoyances, but they can be gotten used to. First, the sketcher solver is different and maybe lacking in 0.17. The interface seems better in some ways though. I frequently set more symmetric and equality constraints first then numerical ones, this works in 0.16, but in 0.17 the solver couldn't handle setting a numeric when there were other corresponding constraints. Thinking about it a better workflow may often be to start with the few numerical constraints needed, but often this is unknown due to complexity or inexperience. Second, the numerical constraint field rounds the third decimal (5.125") up (to 5.13") when you edit it after it is set. This is annoying because I often copy the long decimals just to make sure one part will constrain exactly to another. It also could lead to errors propagating if OK is clicked instead of Cancel. In general, it seems some bugs were traded for others in 0.17. Usefulness of the new advanced features is limited, but mostly due to the complexity of training and experience. The part system should help a long term and once I get used to the different behaviors.

I'm confused by my trouble with the spreadsheet alias' since they clearly work in at least two videos I found. I need to demo/explain this to more fo the team so they can test it as well. I did not test daily 0.18 yet, since the problem appears the same for me in 0.16/0.17. Maybe it is a system setting glitch. I need to try a clean OSE Linux version as well.

Fri Mar 8, 2019

GC sprint. Slow start on sketching the new parts and design for the bench because of changing my mind how to draw parts. I started trying the freecad 0.17 sketcher and the solver in it seems lacking compared to 0.16. Otherwise, many interface aspects are better. I also started using a spreadsheet to test specifying the stock material dimensions, but using cell input as constraints seems to give mixed results.

Seems like lost time on the spreadsheet and intricacies of sketching and arranging parts according to overall measurements. It isn't exact because I didn't draw each part relative to the origin based on math with construction lines. I moved the sketch placements instead. I may rework that for accuracy and editability. It's a start.

File:GC Bench Seat.fcstd

Wed Mar 6, 2019

reviewed some 3d printer info and looking through https://github.com/OpenSourceEcology/3D-Printer-Part-Library and D3D v19.02 parts. Especially the extruder. Considering options on mini pvc assembly. I think I need to redo the assembly file differently for moveable carriages etc.

Tues Mar 5, 2019

busy lately, but I got some parts in the PVC assembly last night.


Recorded the meeting. Unfortunately, the remote audio is extremely low. I finally realized it is because the output audio source was removed somehow in OBS. Maybe I did this last week when making adjustments not understanding or maybe it changed because of switching system audio sources. Either way I locked them in OBS and will need to double check this to make sure until I understand the OBS better.

Tues Feb 26, 2019

meeting prep.

trying to scribble out some teeth on the clamp.

I edited the clamp CAD and STL with versions of 2mm and 1mm gap to create clamping force on the pipe. The 2mm gap looks like it will print ok, but on second look the bolt face isn't quite 1mm thick so it may be weak depending on print quality. The 1mm gap version looks better.

File:PVC mount clamp.fcstd

File:D3D PVC mount clamp.stl

D3D Mini PVC

Published Meeting to YT https://youtu.be/XQBj20cVvDA

I updated the pvc assembly, but had an interesting time doing a local git reset. Best way for one file seems to be to checkout the specific file otherwise the reset --hard option is ok, but the git status was still confusing me for a bit I ended up doing a push with no commit to ensure sync. The assembly file auto updated with the new clamp design as usual, but still has the issues to resolve by replacing the clones.


Mon Feb 25, 2019

downloaded & reviewed other golf cart parts to get ideas.

I was trying to simplify the seat further, but thinking the bench module could be changed to weld into the larger frame for support for itself and to reinforce the whole structure. Angles and maybe even some simple curves somewhere could add a lot of strength. Flexibility in a vehicle is nice too as long as it doesn't tend to get bent out of shape. Maybe some angles to the bench seat legs would be good too. I removed the 10 deg angle on the seat back, but if that was supported by a part extending between the bottom adn top that may help keep the module simpler while being stronger altogether once welded to the larger frame. Since it is a vehicle just welding it seems better long term.

Clamp 3d print looks nice, but I was wondering about hole size for tightness. I was about to shorten the bulk part of the clamp, which is what I understood from Marcin's email when I realized that would only make it the wrong length. Essentially to do it that way 2 separate parts are needed if I understood correctly. I think the hole size is the ideal way. I was trying to think how hard it would be to add teeth in the hole. Maybe it would not be the ultimate sketcher challenge, but it would add a lot of complexity. Regardless I'm thinking it would be good because it would decrease plastic in the bulk part and increase flexibility making it clamp better. If the teeth deviate from a perfect circle that would probably make it clamp good.

Sat Feb 23, 2019

Design Sprint Video https://youtu.be/uWLDsJO4KXs

The recorded file from OBS is only 457MB using x265 & Ogg Vorbis I think, which isn't as small as I was getting from vokoscreen, but for 2hrs+ of video is good given resolution; the quality still looks readable and the audio levels were ok. If I'm not careful the gain is enough I get lots of background noise picked up from typing rubbing the mic, some reverb if I use speakers etc. so it is best to mute my headset manually. There may be other settings in OBS to tweak yet. A how-to video for OBS would be useful given it is a little more complex.

started https://gitlab.com/Abe_Anderson/freecad-macros

still thinking of ways to do the symmetric square with round corners macro better, but need to search for any existing similar macros.

Fri Feb 22, 2019

Design Sprint for Golf Cart

Open Source Golf Cart

edited basic banch seat CAD. Now I'm thinking the bench could be wider and perhaps integrated/welded to the cab frame if that is an option. It may reduce the complexity of the bench module and make more space accessible.

edited the hydraulic PC some. will need to consider further size and shape changes.

File:Power Cube v19.02.fcstd

I also made attempts to record a macro for a sketch of a square with rounded corners, which I found particularly difficult to constrain. I got a macro that works ok, but it has some mistakes recorded still because FreeCAD sketch selection and the solver was being glitchier than usual.

Recording of Design Sprint video is good, but I had to retry the upload, which should auto publish to YT if it finishes overnight.

Thurs Feb 21, 2019

https://youtu.be/k_jO9vXgOSo got meeting updloaded to youtube and linked it in comment on marcin's version.

thinking about break down for assembly sub-assemblies golf cart to be prepared for design sprint.

Tues Feb 19, 2019

meeting prep.

continuing D3D Mini PVC assembly...

started on golf cart gallery. Open Source Golf Cart

Mon Feb 18, 2019

I'm further exploring the freecad center square python macro and related methods. It is definitely not immediately obvious what and how methods should be used to solve generalizing scripts like center square.

In reviewing the long design process with the D3D clamp I'm trying to think of improvements to my process that could be done differently as well as what freecad changes would be most useful. Much of it is the process being broken into short work segments making confusion and mistakes easier from one session to the next. Much of the time was also likely spent trying to avoid adding complexity when in the end a certain amount was simply required to solve the known issues.

Also the useful code from the GettingStartedFreeCADScripting.pdf to import freecad into python is:

import numpy as np
import sys

# path to FreeCAD; I found it from:
# $ locate FreeCAD.so
FREECADPATH = '/usr/lib/freecad-0.16/lib/'

def import_fcstd(path_freecad):
    """try to import FreeCAD on path_freecad"""
        import FreeCAD
        print "Could not import FreeCAD"
        print "Are you using the right path?"


Sat Feb 16, 2019

I'm cloning the freecad repo so that I can easily access the source code for reference when I need to understand it better. Reading is the main requirement to figuring out program and code strucuture. This https://folk.uio.no/jeanra/Teaching/MEK3230/Documents/GettingStartedFreeCADScripting.pdf

The FreeCAD python console is surprisingly accessible with auto-completion, but it is still not as complete as an IDE so it might be interesting to find a way to set up and access the relevant python libs in the atom IDE so it is easier to access class and method info to write more complex code like full workbenches. For macros, which I think can help speed many things the main issue is making the code generic usually by adding some variables to get and set the current objects to the standard names freecad uses. Such as the example code shared here: https://www.youtube.com/watch?v=DurKHgtR1rw

Tues Feb 12, 2019

meeting prep.

busy then had a back problem so I avoided sitting and desk work, but read about freecad development and watched tutorials.

I double checked the distance on the bolt in the full assembly and found I calculated or measured wrong. The total length through the axis part is more than 18mm so currently the bolt length is closer to 36mm. To reduce it down to 30mm the short nut recess well have to be removed or minimized and the longer recess moved until the distance through the clamp is 0.23" which leaves less than 1/8" for each half. Printable, but possibly weak. Time to test it though.

Reworked the clamp, it measures correct now, but definitely has some thin points. Time to see how it prints.


uploaded new files to D3D_Mini_PVC#Part_Library

Fri Feb 8, 2019

freecad a2+ WB demo https://youtu.be/mnkecA9S7kc

looks like some slight adjustments to the clamp might be needed to get the short side hex nut catcher deeper. Otherwise, I think the next steps are adding more printer parts to check assembly alignment and freedom of motion.

Wed Feb 6, 2019

updated clamp with hex holes. https://gitlab.com/Abe_Anderson/d3d-mini-pvc/blob/master/Hardware/PVC_mount_assymetrical_collar_clamp.fcstd

If the hex holes don't print well the sketch shape may need customizing. To get through the axis requires 18mm, so the shape of the clamp needs to be more complex yet to get a 30mm bolt to reach another 12mm through the clamp. Less than 0.5".

reviewing 3d printer manual and BOM's to check bolt sizes and the assembly instructions for any potential difficulties in relation to the clamp and axis'.

Tue Feb 5, 2019

trying to prepare for the meeting and continue work on the new clamp, but my internet seems flaky. fog might be blocking it.

found I failed to add the new clamp file. did so and thankfully the assembly auto updated with it nicely for a change.


Fri Feb 1, 2019

Added new assymetrical clamp design. https://gitlab.com/Abe_Anderson/d3d-mini-pvc

I need tor more thoroughly review the CEB Press Code again, but I'm wondering what the ideal time delays for switching are in the long term when hardware specs degrade or environment causes variation. I'm guessing delays are required because they simply align the software with the actual hardware speed. Switching times are negligible so looking for speedups there will not give great returns. More power and maybe more efficient cylinders at higher costs seem likely to be the only path to more speed.

Delay times in the software do add up so maybe if the entire system was based more on timing such as with the math for compensation of retraction-extension then estimates of when to test switches could be made, but this adds so much complexity that is likely to fail due to variations in power and the ambient environment I can't see such methods working well.

Also given the inevitable degradation of the hardware and switches going out of spec and it not likely being worth adding any further hardware debounce (capacitors) using the existing Arduino libraries (bouncev2) as the default for debouncing all switch like inputs is likely an ideal solution. The complexity is mitigated by being as simple as possible, encapsulated for ease of novice use and well-documented and supported by the community.

Wed Jan 30, 2019

I did a find and replace all on the pressure func in all files because it didn't read sensibly I think I changed the code before or copied it and it read poorly since. Now looking at debounce options. What is done now is similar to bounce lib's BOUNCE_LOCK_OUT method and if it fails to read true the first time it fails. Also if it reads false twice due to noise. Three checks with different logic could be made, but I think something similar to the BOUNCE_WITH_PROMPT_DETECTION method may be a better fit.

I had a quick thought and added a recursion to recheck pressure after 2nd condition fails. I think this is still insufficient to catch all noise cases. It really needs to catch all the noise cases possible to prevent missing steps.

Some confusion it looks like some code updates on CEB Press Control Code v19.01 weren't pushed to the repo and I assumed they were.


Tues Jan 29, 2019

assembled D3D PVC mini axis' on frame with enlarged clamp design. the 0.6" thicker clamps are very close, but not exact; There is some negligible space, which should be fine.


I'm examining the D3D PVC mini assembly further and thinking about the clamp and bolt length situation. The main reason for the larger clamp is because the clamp was designed to be as small to start and there was insufficient room around the PVC to make it smaller the other way to accommodate spacing for the X-axis length. The other possible positions likely require unequal axis' lengths and/or asymmetrical clamps. The Y's could go on the inside making the X length ~9" with ~6" usable print space. This may be acceptable for a 6" print bed, but less so for 8". There may be some clamp design where the Y's could go between the frame pipes, but that reduces print volume significantly. ~10.5" - (0.5-1" for clamp ~3"+) for axis parts. The Z axis is less of an issue it doesn't need to reach the top of the frame due to the extruder height anyway. The Y axis' are also slightly longer than needed.

Clearances to check are magnetic end stop holders, motors, and extruder parts.

File:PVC mount clamp.fcstd I uploaded the current version of the clamp, but I have some further ideas for reducing volume and maybe a less symmetrical design for reduced bolt length.

The bolt length is a difficult issue because 30mm is about the thickness of the clamshell axis parts, so anything reaching to bolt to the pipe needs to be much longer. Looking back at the original working doc the T style snap clamp almost worked except the 2nd bolt across the pipe was longer. The C snap style clamps are most tempting because of the minimal bolt lengths possible.

Looking at changes to CEB Press Code. If I understand what Marcin said in the meeting the debounce function wasn't always working. Looking at it now it is not surprising. It is too simple and has no state check. Something more like https://www.arduino.cc/en/tutorial/debounce should work much better and still be easy to understand. I think the reset mode option can also easily be made available after the cycle completes. Also see bounce and bouncev2 libraries https://forum.arduino.cc/index.php?topic=266132.60

Sun Jan 27, 2019

I got a return email from Marcin about the Power Cubes, reviewed Power Cube docs further and created Power Cube Modularity.

Sat Jan 26, 2019

I keep having to nearly restart the assembly of the d3d mini pvc axis', so I'm trying to find a more reliable way.

Reviewing some power cube docs per Marcin's email about further modularity by separating the hydraulic system into it's own cube.

Power Cube v17.10

Thurs Jan 24, 2019

changed clamp significantly to get closer to ~0.6" along the direction of the bolts to allow the X axis to fit between the Y's. It will probably still need minor adjustments, but I've made changes to the files to make that go faster at least. Still fighting the assembly solver.


reading CEB Press Control Code v19.01 I noticed some comments could be clearer.


I also keep coming back to evaluating the loop. Particularly the selector switch changing the mode at any point. Currently, that requires the user understanding the position should only be changed at the end of a cycle ideally; Since results may vary when changed during any step. The startup is ok because the recalibration cycle gives the user time to set the switch position and this is a repeated cycle creating a good point to change it if desired while continuing auto operation. The delays and relatively slow speed of operation negate thrashing about of the machine when the switch is turned through multiple positions, but the code in the loop still executes a step once it detects a certain position. Users will need to be instructed to change the selection position at ideal points. Possible workarounds require a state machine mode check changed only at the start of cycle or major changes to the code to reduce branches.

This has given me a possible idea for a simpler program. The main difference in the mode options is the delay(time). Currently, the drawerExt calibration time is being used for the main cylinder as well. I recall the main cyl should be slower, but the times are probably close enough this works ok and the modifier values can be changed. Using drawerExt time for the main cyl might be a little confusing to read though. If a selectionMode() is made that returns the time in delay(time) instead of just a number it would eliminate the need for the current functions. All of them I think. resetSel() would need to return 0. Lots of code gets moved from the loop to a single larger function, but I think with many fewer lines of code. Thinking further...

I explored adding the function to return time without removing the others, which was quicker to see that it doesn't change too much. The uniqueness of possible steps still requires a lot of other code so it may reduce lines of code, but not too much complexity. There are many possibilities that may reduce lines of code, but not necessarily overall complexity.

Wed Jan 23, 2019

Testing https://platformio.org/platformio-ide in Atom for Arduino IoT. At first, there were some differences to work through because of moving to a more standard project file/folder structure, but I got it to compile ok and the serial port works ok after I used Arduino IDE serial twice to apparently reset the currently running sketch. That could be a program bug in the climate monitor. Apparently to access some platformIO features a free account is required. They are pushing services, but it is all open source based on github's electron framework as I understand. Reading further the debugger is not part of the free community version. It isn't the most critical feature currently and the platformIO IDE addition to Atom plenty of features beyond Arduino IDE, but I'll keep looking for alternatives.

I also added an install of Arduino IDE 1.8.8 and tested it ok. It even drops some warnings related to internal arduino libs in verbose output. It also reminded me of the memory usage with its more friendly compiler message output. The global class instances in the Climate Monitor/Controller are probably an issue especially since much more would be added by wireless and any future features. I need to study class scope better to find solutions.



Reviewing the d3d pvc mini I see I still have a lot of assemblies to test. I think I was fighting the assembly system just to get measurements before trying to do a full assembly so I didn't end up doing it repeatedly. There must be better ways.


Looks like increasing the clamp half thickness by ~0.16in's would make the rod length work out longer at ~14.45in's, but I recall now it is more complex than it first appears due to multiple clearance points.

Tues Jan 22, 2019

I just found a code issue. Line 128
 if (resetSelected() == false) { 
executes first and then the following operations as well when the selector switch is in position 0. This is because position 0 provides no inputs. I was assuming that when there was no input the code was doing nothing, but detecting reset mode requires a connection. Making it work by exclusion may not be a good design nor do I see that working with the current code layout. Technically there being no inputs detected (position 0) the machine ideally would do nothing. checking emails about code. this will require some thought.

I think Marcin's idea of making reset the exclusion of any inputs works out ok. So I changed the reset function and restored the 1/4 brick option.


added more comments.

I think the inputs for the switch need to be set with internal pullups for the easiest wiring method so I added the option to the *.ino file.

Looks like the test files need updating. If I understood git for code better maybe I could merge them.

Rethinking code on line 150 - https://github.com/OpenSourceEcology/OSE_CEB_Press_v19.01/blob/master/CEB%20Press%20Test%20Code%20-%20Selection%20Switching

I don't see how it can be the code. Using && (AND) and not || (OR) is the correct condition for making the reset exclude all other options. It must be a switch wiring issue... No line 79 has clues.


Prior to Arduino 1.0.1, it was possible to configure the internal pull-ups in the following manner:

pinMode(pin, INPUT);           // set pin to input
digitalWrite(pin, HIGH);       // turn on pullup resistors

I'm also trying to correctly setup arduino to work with Atom for ease of coding and found this to work on tomorrow.


Sun Jan 20, 2019

BSD licensed lib should be compatible with sunfounder LCD. I can't tell the hardware is open source and the other software libs are not licensed. https://github.com/mathertel/LiquidCrystal_PCF8574

Looks like there are a few wear leveling libs for Arduino, but one looks too simple. How it encodes the number matters more because of wear leveling. Storing a single byte or 255 bricks is obviously not enough. An unsigned long (32 bit) will store 4M brick count, but erases 4 bytes each update. 65K from using 16 bit is reasonable. Users can understand it rolled over. I'm sure there are other complex binary encoding schemes to consider as well. If it writes a brick value based on time (hourly) and is wear leveled in a series of addresses they could all be added, except that it would need to incorporate a way to tell which, addresses to add or not.


There are multiple ways to get a brick count without an integrated screen that don't necessarily require using EEPROM.

  • Serial I/O to computer/cell phone over USB
  • Wireless - wifi/BLE to device(s)
  • Use the SD card slot available on a reprap LCD kit. Likely more useful in conjunction with the above output methods.

With likely many oversimplified assumptions:

For simple series wear leveling and 2 byte unsigned longs that halves the 4096 bytes of EEPROM on the Mega2560 to 2048 records. If hourly writes are made on a machine making 7 bricks per min. Thats 420 BpHr. * 2048 hrs = 860160 brick count / 65536 = 13.125 rollovers. 65536/420 = ~156 hrs.

More research on the wear leveling algorithms in the available libraries is needed... https://forum.arduino.cc/index.php?topic=85047.0 https://forum.arduino.cc/index.php?topic=385419.0

"Table 28-12 says that the EEPROM has a 4 byte page size." So it might as well write/erase 32bit values up to 4.294967296e9 each time. That, however, means it is only good for 1024 records. 1024 hrs*420Bphr = 430,080 brick